[英]XMLHttpRequest not sending in Firefox (addon)
我正在開發一個需要向我的服務器發出 POST 請求的插件。
我為此使用 XMLHttpRequest。 它在 Chrome 上運行良好,但從未在 Firefox 上發送 POST 請求。開發工具(控制台/.network/插件檢查控制台)中沒有顯示任何內容,我的服務器上也沒有收到任何內容。 我已經在我的整個 PC 上禁用了任何其他插件和任何類型的安全(是的,我很絕望)。
清單.json
{
...
"manifest_version": 2,
"content_scripts": [{
"matches": ["*://myurl.com/*"],
"js": ["content.js"],
"run_at": "document_end"
}],
"permissions": ["activeTab", "webRequest"]
}
我的內容腳本中的發布請求
const post = () => {
const xhr = new XMLHttpRequest();
xhr.open('POST', 'https://myserver.com/test', false);
xhr.setRequestHeader('Content-Type', 'application/json');
console.log('Before sending request');
xhr.send(JSON.stringify({id: myId}));
console.log('Request sent');
return xhr.responseText;
};
僅記錄“發送請求前”。 xhr.send() 之后的任何內容都不會執行(這包括我代碼的 rest 中 post() 調用之后的代碼)。
我的服務器接受所有來源。 它還正確配置為接收和處理 POST 請求
const cors = require('cors')
app.use(cors());
這有什么問題嗎? 它在 Chrome 上完美運行,我不知道為什么它永遠不會在不留下任何錯誤的情況下發送......
根據firefox 上的帖子,XHR 根據調用上下文以不同方式工作,考慮將調用移至后台腳本以查看您是否獲得不同的行為。
您應該考慮將您的 URL(例如"*://myurl.com/*"
)作為主機權限添加到權限數組中,以獲得 XMLHttpRequest 的權限。請參閱MDN和Chrome 文檔中的官方文檔。
您可以看到這個問題也包含在這個SO answer中
順便說一句,我會考慮按照 Chrome 的建議遷移到 manifest V3:
Chrome Web 商店不再接受 Manifest V2 擴展。 構建新擴展時請使用 Manifest V3。
正如@Cadmium 在問題評論中建議的那樣(即使我不想在那里處理此請求),我已將我post()
function 移至后台腳本。
它現在可以在 Chrome 和 Firefox 上運行。我仍然不明白為什么它在 Firefox 上會這樣,但現在對我來說這是一個足夠好的解決方法!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.