在开发自己的网络应用程序时,我编写了一个chrome 网络扩展来避免 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) 阻止 了具有 MIME 类型 application/json的跨域响应https://xxxxxxx.com/abc.json?siteId=69 。有关详细信息,请参阅 https://www.chromestatus.com/feature/5629709824032768 。