【发布时间】:2016-08-06 12:26:34
【问题描述】:
我正在尝试获取一个文件并返回它的 HTML。然而事情并没有我想象的那么简单。
fetch('/path/to/file')
.then(function (response) {
return response.body;
})
.then(function (body) {
console.log(body);
});
这将返回一个名为 ReadableByteStream 的对象。如何使用它来获取 HTML 文件内容?
如果我将/path/to/file 的内容更改为 JSON 字符串,并将上面的内容更改为:
fetch('/path/to/file')
.then(function (response) {
return response.json();
})
.then(function (json) {
console.log(json);
});
... 它正确返回 JSON。如何获取 HTML?
【问题讨论】:
-
这引起了人们的关注:你打算用那个 HTML 做什么?因为我希望它不是“将其注入我的活动文档中”。而是以 JSON 形式请求数据,然后围绕该数据在客户端构建 DOM,以便您知道用户不会加载可能被黑客入侵和超级不安全的盲 HTML。
-
@Mike'Pomax'Kamermans 您假设 HTML 来自用户。我返回服务器端生成的 HTML 以利用使用强类型服务器语言创建的强类型视图。
-
你信任你的服务器吗?我当然不信任我的,我什至不拥有它运行的硬件。我可以全心全意地推荐使用morphdom,而不是要求HTML,而不是:让您的服务器生成HTML,然后生成一个发送给您的客户端的diff,并让他们将该差异应用于活动再次使用 morphdom 的 DOM。更小的有效载荷,因此响应速度更快,也更安全。
-
@Mike'Pomax'Kamermans 因为 JS 可以在控制台中运行,所以用户不能在活动文档中注入任何东西吗?
-
没有开启理智的 CSP,没有。他们可以添加它,但浏览器会拒绝运行它,因为它违反了服务器的
script-srcCSP 规则。
标签: javascript fetch-api