7

Firefox アドオンから xhr リクエストを作成する例をたくさん見てきましたが、新しいWebExtensionsのもの (requireComponentsは未定義) を使用しようとしていますが、単純な XmlHttpRequest を送信できない理由がわかりません。拡張子内?

ajax リクエストはまったく別の URL に送信されますが、ホストにはすべてのオリジンを許可するように COR が設定されていることに注意してください。

.send()が解雇されるとすぐに、エラーが発生します。

[例外... "失敗" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "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"
    ]
  }
4

1 に答える 1

5

問題は、指定された許可 URL でした。サブドメインをアスタリスクに、プロトコルをアスタリスクに変更したところ、その後はうまくいったようです。

于 2016-06-23T05:54:54.973 に答える