Chrome Extension Service Worker 提取请求中的来源已更改
Origin is changed in Chrome Extension Service Worker Fetch Request
您好,我正在为社交媒体营销开发 chrome 扩展。我在 service_worker 中使用 fetch 在 facebook 上发送请求,但它对我不起作用。
当我从网络请求中将此请求复制为获取请求,然后将其粘贴到 Facebook 页面时,它运行良好。
不同之处在于 origin-header 在 service-worker 中发送此请求时被覆盖,这就是为什么它对我不起作用。
我正在使用此代码更改 headers 但这对我也不起作用。
await chrome.webRequest.onBeforeSendHeaders.addListener(
(details) => {
let { requestHeaders } = details;
const headerList = {};
for (let i = 0; i < requestHeaders.length; i += 1) {
if (requestHeaders[i].name === 'Origin') {
requestHeaders[i].value = 'https://m.facebook.com';
break;
}
}
headerList.requestHeaders = requestHeaders;
return headerList;
}, { urls: ["<all_urls>"] }, ["requestHeaders", "extraHeaders"])
能否请您详细说明我应该如何使用webRequest.onbeforeSendHeaders来更改headers。如果一定要用declarativeNetRequest,我应该怎么用呢
我正在使用 Manivest 版本 3 BTW。
我用 chrome.declarativeNetRequest.updateDynamicRules 覆盖了 headers
这是代码。
await chrome.declarativeNetRequest.updateDynamicRules(
{
addRules: [{
"id": 1,
"priority": 1,
"action": {
type: 'modifyHeaders',
requestHeaders: [
{ header: 'origin', operation: 'set', value: "https://www.facebook.com" }
],
},
"condition": { "urlFilter": "facebook.com", "resourceTypes": ["xmlhttprequest"] }
}
],
removeRuleIds: [1]
},
)
您还必须提供在 manifest.json
中使用 declarativeNetRequest 的权限
您好,我正在为社交媒体营销开发 chrome 扩展。我在 service_worker 中使用 fetch 在 facebook 上发送请求,但它对我不起作用。
当我从网络请求中将此请求复制为获取请求,然后将其粘贴到 Facebook 页面时,它运行良好。
不同之处在于 origin-header 在 service-worker 中发送此请求时被覆盖,这就是为什么它对我不起作用。
我正在使用此代码更改 headers 但这对我也不起作用。
await chrome.webRequest.onBeforeSendHeaders.addListener(
(details) => {
let { requestHeaders } = details;
const headerList = {};
for (let i = 0; i < requestHeaders.length; i += 1) {
if (requestHeaders[i].name === 'Origin') {
requestHeaders[i].value = 'https://m.facebook.com';
break;
}
}
headerList.requestHeaders = requestHeaders;
return headerList;
}, { urls: ["<all_urls>"] }, ["requestHeaders", "extraHeaders"])
能否请您详细说明我应该如何使用webRequest.onbeforeSendHeaders来更改headers。如果一定要用declarativeNetRequest,我应该怎么用呢
我正在使用 Manivest 版本 3 BTW。
我用 chrome.declarativeNetRequest.updateDynamicRules 覆盖了 headers
这是代码。
await chrome.declarativeNetRequest.updateDynamicRules(
{
addRules: [{
"id": 1,
"priority": 1,
"action": {
type: 'modifyHeaders',
requestHeaders: [
{ header: 'origin', operation: 'set', value: "https://www.facebook.com" }
],
},
"condition": { "urlFilter": "facebook.com", "resourceTypes": ["xmlhttprequest"] }
}
],
removeRuleIds: [1]
},
)
您还必须提供在 manifest.json
中使用 declarativeNetRequest 的权限