Фоновая страница расширения Chrome возвращает ошибку Access-Control-Allow-Origin только иногда (обычно в Windows XP) - PullRequest
0 голосов
/ 16 сентября 2011

Я пишу расширение, которое запрашивает содержимое XML с сервера и отображает данные во всплывающем окне или диалоговом окне.Я добавил веб-сайт к своим разрешениям manifest.json следующим образом:

"permissions": [
    "tabs",
    "cookies",
    "http://www.mywebsite.com/*"
],

Позже я добавил следующий код на свою фоновую страницу:

    function loadData() {
    var url = "http://www.mywebsite.com/api/data.xml";
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.onreadystatechange = function() {
      if (xhr.readyState == 4) {
        if (xhr.status == 200) {
            // do something
            // ....
            // save data
            DATA.xml = xhr;
        } else {
            // try to capture error and retry
            DATA.error = true;
            var pollInterval = 3000;
            if (DATA.t) { window.clearTimeout(DATA.t); }
            DATA.t = window.setTimeout(loadData, pollInterval);
        }
      }
    }
    xhr.send();
}

function init() {
    // do something
    loadData();
}

<body onload="init()">
</body>

Что странно, что во времяПри первом использовании (после установки) на машине с Windows 7 это (почти) всегда успешно и приносит данные , но на машине с Windows XP (мы пробовали несколько) это (почти) всегда не удается и выдает ошибку:

XMLHttpRequest cannot load http://www.mywebsite.com/api/data.xml. Origin chrome-extension://ficdjnjlmbnjlgdimegfgbakktfnilnp is not allowed by Access-Control-Allow-Origin.

Что еще, на компьютере xp, если я щелкну значок, который открывает диалоговое окно или страницы параметров (которые не выполняют никаких запросов xml), то содержимое полученоправильно!Как вы можете видеть в коде, я пытался повторить запрос несколько раз - он всегда терпел неудачу с одной и той же ошибкой, также я пытался отложить начальный запрос до 10 секунд.

Обе операционные системыта же версия Chrome: Chrome / 13.0.782.220 - которая должна поддерживать межсайтовые запросы xhr.

Я надеюсь, что кто-то может помочь мне с этой странной проблемой ...

1 Ответ

2 голосов
/ 14 октября 2011

Краткий ответ: это ошибка

Длинный ответ: над ним работают разработчики Chromium, кажется, что это происходит только в специальных сценариях (вероятно, связано с другим установленным расширением / с, которое сталкивается стот, который пытается установить).

Подробности здесь: http://code.google.com/p/chromium/issues/detail?id=88373

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