Chrome 扩展中的 Origin 标头

Posted

技术标签:

【中文标题】Chrome 扩展中的 Origin 标头【英文标题】:Origin header in Chrome Extension 【发布时间】: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://*/ 一起使用 【参考方案1】:

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

【讨论】:

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

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

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

【讨论】:

以上是关于Chrome 扩展中的 Origin 标头的主要内容,如果未能解决你的问题,请参考以下文章

“Access-Control-Allow-Origin”标头包含多个值“*、*”,但只允许一个。在 Chrome 和 Firefox 中

Chrome 扩展 20 小时后没有“Access-Control-Allow-Origin”标头

无法从获取请求中获取“Access-Control-Allow-Origin”标头

连接到 WebSocket 时如何覆盖 Chrome 中的 Origin 标头?

移动 Chrome 上的 CORS Allow-Access-Control-Origin

Chrome 说没有“Access-Control-Allow-Origin”标头,但标头在那里