【发布时间】:2019-07-14 03:50:46
【问题描述】:
我写了一个chrome web extension 来避免在开发自己的网络应用程序时出现 CORS 限制。该扩展是开发人员的工具,用于代理从源 url 到目标 url 的请求。
这样的扩展核心代码,开发者可以在我的 站点和请求到他们的服务器端,没有 CORS 限制:
chrome.webRequest.onBeforeRequest.addListener(details => {
let redirectUrl = '';
//...
redirectUrl = details.url.replace(TNT.validRules[i].source, TNT.validRules[i].dest);
return {redirectUrl}
}, {urls: ['<all_urls>']}, ['blocking']);
chrome.webRequest.onHeadersReceived.addListener(details => {
details.responseHeaders.map(item => {
if (item.name.toLowerCase() == 'Access-Control-Allow-Origin'.toLowerCase()) {
item.value = '*'
}
})
return {responseHeaders};
}, {urls: ['<all_urls>']}, ["blocking", "responseHeaders"]);
但最新的 Chrome 72 无法代理请求。控制台错误是:
跨域读取阻塞 (CORB) 阻止了跨域响应 https://xxxxxxx.com/abc.json?siteId=69 MIME 类型应用程序/json。看 https://www.chromestatus.com/feature/5629709824032768 了解更多 详情。
【问题讨论】:
-
在您的后台页面执行请求并通过消息将结果发送到您的内容脚本。
-
确实我添加了一个 eventListener onHeadersReceived 并在 background.js 中设置 'Access-Control-Allow-Origin'='*'。该扩展在 chrome 72 之前运行良好。但现在无法运行。
-
刚刚偶然发现了official explainer,它演示了我上面所说的内容。
-
谢谢。这就是扩展程序不起作用的原因。我还需要弄清楚如何解决这个问题。不知道要花多少钱:(
-
@wOxxOm 对不起,我的英语很差。这些代码是否清楚地解释了我的问题?
标签: google-chrome-extension cross-origin-read-blocking