Pan*_*yal 22 javascript fetch-api
我正在尝试使用fetch API获取页面的HTML.这是我的代码.
var quizUrl = 'http://www.lipsum.com/';
var myHeaders = new Headers();
myHeaders.append('Content-Type', 'text/html');
fetch(quizUrl,{
mode: 'no-cors',
method: 'get',
headers: myHeaders
}).then(function(response) {
response.text().then(function(text) {
console.log(text);
})
}).catch(function(err) {
console.log(err)
});
Run Code Online (Sandbox Code Playgroud)
它返回空字符串.任何猜测为什么它不起作用?
Dan*_*tie 38
我想这可能会有所帮助,请按以下方式使用:
fetch('/url/to/server')
.then((res) => {
return res.text();
})
.then((data) => {
$('#container').html(data);
});
Run Code Online (Sandbox Code Playgroud)
我曾经$('#container')代表你想要检索它后的html数据的容器.
与获取JSON数据的差别是使用res.json()代替
res.text()
而且也没有任何附加头
Kai*_*ido 14
关于(来自MDN,强调我的)Request.mode'no-cors'
防止该方法不是HEAD,GET或POST.如果任何ServiceWorkers拦截这些请求,他们可能不会添加或覆盖除这些之外的任何标头.此外,JavaScript可能无法访问生成的Response的任何属性.这可确保ServiceWorkers不会影响Web的语义,并防止因跨域泄漏数据而导致的安全性和隐私问题.
因此,这将启用请求,但会使响应成为opaque,即,除非知道目标在那里,否则您将无法从中获取任何内容.
由于您尝试获取跨域域,因此与代理路由无关.
PS:这是一个片段,显示请求确实是不透明的:
var quizUrl = 'http://www.lipsum.com/';
fetch(quizUrl, {
mode: 'no-cors',
method: 'get'
}).then(function(response) {
console.log(response.type)
}).catch(function(err) {
console.log(err) // this won't trigger because there is no actual error
});Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36477 次 |
| 最近记录: |