【问题标题】:use fetch function will go wrong in my chrome extension ,it will not send cookies在我的 chrome 扩展中使用 fetch 功能会出错,它不会发送 cookie
【发布时间】: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

no data response 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


【解决方案1】:

我发现有一个与我的问题类似的答案, CORS Chrome Extension with manifest version 2。 这个问题是由CORS引起的。 可以通过向 manifest.json 添加权限来解决 像这样:

    "permissions": [
      "https://*/"
    ],

【讨论】:

    猜你喜欢
    • 2016-06-03
    • 2017-12-26
    • 2019-01-14
    • 2019-01-27
    • 1970-01-01
    • 2019-10-15
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多