web-dev-qa-db-ja.com

chrome拡張機能のクロスオリジンXMLHttpRequest

chrome拡張機能によると、権限が設定されている場合、XMLHttpRequestオブジェクトを使用したAPIクロスオリジン呼び出しを許可する必要があります。

拡張機能は、最初にクロスオリジン権限を要求する限り、オリジン外のリモートサーバーと通信できます。

私は密接にフォローしています チュートリアル しかし、以下のコードは私にエラーメッセージを与えています:

XMLHttpRequestを読み込めません http://www.google.com/search?hl=en&q=ajax 。 Origin chrome-extension:// bmehmboknpnjgjbmiaoidkkjfcgiimboは、Access-Control-Allow-Originでは許可されていません。

Google.comへのリクエストを許可しただけでなく、どのウェブサイトへのリクエストも許可しましたが、それでも通過できません。誰か助けてもらえますか?

私のマニフェストファイル:

{
  "name": "The popup",
  "version": "0.1",
  "popup": "popup.html",
  "permissions": [
    "http://*/*",
    "https://*/*",
    "https://www.google.com/*",
    "http://www.google.com/*"
    ],
  "browser_action": {
    "default_icon": "clock-19.png",
    "default_title": "This is title",
    "default_popup": "popup.html"
  }
}

実際の呼び出し:

function sendRequest() {
    document.write("Sending request");
    var req = new XMLHttpRequest();
      req.open("GET", "http://www.google.com/search?hl=en&q=ajax", true);
      req.onreadystatechange = function() {
          if (req.readyState == 4) {
            if (req.status == 200) {
              alert(req.responseText);
              document.write("OK");
            }
          }
        };
      req.send();
} 
12
matcheek

2つのこと。ホストされているものではなく、パッケージ化されたアプリ/拡張機能を作成していることを確認する必要があります。クロスオリジンリクエストは、ホストされているアプリでは機能しません。その部分が固定されていると仮定すると、次のことを権限に入れてみることをお勧めします。http://*/。パッケージ化されたアプリの1つに使用できるのはこれだけで、Originとのクロスは問題なく実行されます。

27
Marius Kjeldahl