【问题标题】:Origin header in Chrome ExtensionChrome 扩展中的 Origin 标头
【发布时间】:2016-05-12 01:37:31
【问题描述】:

我的 api 在节点 js 上运行,出于安​​全原因,我设置了一个中间件功能检查源头,如果它来自我的网站,那么只有 api 应该继续。我发现 Chrome 扩展存在问题,因为它没有在 get 请求中传递源头,也在 put 请求中,它发送类似 chrome:// 的东西作为源头。有人可以帮忙吗?

问候, 马尼克·米塔尔

【问题讨论】:

  • 我猜你正在接收你的扩展的本地 URI 作为来源。尝试将其添加到您的中间件函数中。
  • 尝试将清单文件中的权限授予您的本地 API (http://*)
  • 如果你输入http://* 你会得到一个错误Permission 'http://*' is unknown or URL pattern is malformed. 使用http://*/ 代替。还要记住是否可以将 https 与 https://*/ 一起使用

标签: node.js google-chrome google-chrome-extension header same-origin-policy


【解决方案1】:

如果您添加 manifest.json "permissions": ["https://*/"] 您应该不会遇到 CORS 问题。或者,如果您只希望您的 API 避免这种情况,只需添加您自己的 url。

【讨论】:

  • manifest.json 中的权限仅修复了后台脚本和浏览器操作(例如弹出窗口)的 CORS,但不适用于内容脚本
  • 也不要设置成*/*,只要设置成你想要的域名就可以了https://api.example.com/*
【解决方案2】:

嗯,这就是 Chrome 为扩展设置 Origin 的方式。重写并不简单。

但是,可以覆盖。您需要使用webRequest API,特别是对onBeforeSendHeaders 的阻止响应,将来源重写为您喜欢的任何内容。

【讨论】:

    猜你喜欢
    • 2016-11-02
    • 1970-01-01
    • 2011-10-26
    • 2012-02-26
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    相关资源
    最近更新 更多