Перекрестное происхождение XMLHttpRequest в расширениях Chrome - PullRequest
10 голосов
/ 24 февраля 2012

Согласно API расширений Chrome вызовы между источниками API с использованием объекта XMLHttpRequest должны быть разрешены, если установлены разрешения:

Расширение может взаимодействовать с удаленными серверами за пределами своего источника, если оно сначала запрашиваетразрешения между источниками.

Я внимательно слежу за учебным пособием , но приведенный ниже код дает мне сообщение об ошибке:

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();
} 

1 Ответ

27 голосов
/ 24 февраля 2012

две вещи;вам нужно убедиться, что вы создаете упакованное приложение / расширение, а не размещенное.Запросы перекрестного происхождения не будут работать с размещенными приложениями.Предполагая, что вы закрепили эту часть, вы можете попытаться добавить в свои разрешения следующее: http://*/.Это единственное, что у меня есть для одного из моих упакованных приложений, и оно без проблем создает вещи из разных источников.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...