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 标头?