Я пишу расширение, которое запрашивает содержимое 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.
Я надеюсь, что кто-то может помочь мне с этой странной проблемой ...