【发布时间】:2022-06-10 20:25:14
【问题描述】:
我想在我的background.js中调用fetch函数从服务器获取一些数据。 像这样:
fetch("https://api.bilibili.com/x/space/acc/info?mid=402655790&jsonp=jsonp")
.then(response=>{
console.log(response)
})
但是控制台打印 error description photo
我找到了一些方法来解决这个问题。
使用mode:"no-cors"
最后,我成功发送了一个请求,但是没有任何响应。
request success,status code ==200 photo
此外,我发现我的请求标头中没有 cookie
no cookies in request header photo
如何成功发送请求,并从服务器获取正确的数据?
【问题讨论】:
-
我尝试插入这样的cookie ``` fetch("xxx",{ method:"GET", mode:"no-cors", headers:{ cookie:"XXXXXXXXXXXXXXX" } }) ``` 但它不起作用,我的请求消息中没有 cookie
-
首先 -
mode:"no-cors"保证您将无法访问结果 - 至于 cookie,fetch仅在您询问时才发送 cookie - 这是 documented here 如何发送 cookie跨源 - 由于问题是 CORS,因此您将无法从浏览器中获取该 API - 您需要通过自己的服务器代理请求 -
同时添加
jsonp不会使 API 发送 jsonp(如您所见) - 此外,JSONP 的处理方式与 AJAX 非常不同 -
这不应该是在请求设置中添加
credentials: 'include'的情况吗?
标签: javascript cookies google-chrome-extension fetch