簡體   English   中英

XMLHttpRequest 不發送 Firefox(插件)

[英]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 的權限。請參閱MDNChrome 文檔中的官方文檔

您可以看到這個問題也包含在這個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM