我已经看到了大量从 Firefox 附加组件创建 xhr 请求的示例,但我正在尝试使用新的WebExtensions东西(其中require
和Components
未定义)并且似乎不明白为什么我不能发送一个简单的 XmlHttpRequest 从在扩展内?
值得注意的是,ajax 请求将发送到一个完全不同的 URL,但主机已将 COR 设置为允许所有来源。
一旦.send()
被解雇,我就会得到错误:
[异常...“失败”nsresult:“0x80004005(NS_ERROR_FAILURE)”位置:“JS 框架 :: resource://gre/modules/ExtensionContent.jsm -> moz-extension://9ca18411-9a95-4fda-8184- 9dcd3448a41a/myapp.js :: GM_xmlhttpRequest :: 第 162 行"数据:无]"1 whatsapp.js:166:9
代码如下所示:
function GM_xmlhttpRequest(orders) {
try {
var oReq = new XMLHttpRequest();
oReq.addEventListener("load", function(a1, a2, a3) {
console.log('xhr.load: %s, %s, %s', a1, a2, a3);
});
// open synchronously
oReq.open(orders.method, orders.url, false);
// headers
for (var key in orders.headers) {
oReq.setRequestHeader(key, orders.headers[key]);
}
// send
var res = oReq.send(orders.data);
console.log('xhr result: %s', res);
} catch(e) {
debugger;
console.warn('could not send ajax request %s to %s, reason %s', orders.method, orders.url, e.toString());
}
}
我在 manifest.json 中添加了 webRequest 权限,我意识到这不是它的意思,但我很难理解是什么阻止了 ajax 请求?有任何想法吗?
{
"manifest_version": 2,
"name": "MyApp",
"version": "1.0",
"description": "TestXHR",
"icons": {
"48": "icons/myapp-48.png"
},
"applications": {
"gecko": {
"id": "software@vigilantapps.com",
"strict_min_version": "45.0"
}
},
"content_scripts": [
{
"matches": ["*://web.myapp.com/*"],
"js": ["myapp.js"]
}
],
"permissions": [
"https://thehost.all-xhr-sent-here.net/*",
"webRequest"
]
}