XMLHttpRequest перекрестного происхождения из расширения Chrome, возвращающий статус 0
Я пишу расширение Chrome, которое должно загрузить некоторые данные с другого сайта. Исходя из моих исследований, я считаю, что для этого мне следует использовать XMLHttpRequest, но он возвращает responseText="" и status=0 для каждого сайта, который я пробую. URL-адреса, которые я передаю в javascript, хороши; я пытался
http://www.google.com
а также
http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22MSFT%22)&env=store://datatables.org/alltableswithkeys
,
Я делаю что-то невежественное / глупое? Я считаю, что это что-то с разрешениями в манифесте, но то, что у меня сейчас есть, должно разрешить оба этих сайта. Я не вижу ошибок в моей консоли javascript.
Манифест:
{
"manifest_version": 2,
"name": "nnnn",
"description": "nnnn",
"version": "1.0",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"permissions": [
"storage",
"http://*.query.yahooapis.com/*",
"http://*/*",
"https://*/*"
]
}
Функция JavaScript:
function getSite(queryUrl) {
var request = new XMLHttpRequest();
request.open("GET", queryUrl, true);
console.log(queryUrl);
request.onreadystatechange = function () {
console.log(request);
if (request.readyState == 4) {
if (request.status == 200) {
console.log(request.responseText);
} else {
console.log('Unable to resolve address');
}
}
};
request.send(null);
}
РЕДАКТИРОВАТЬ: http://developer.chrome.com/extensions/xhr.html Это в значительной степени то, что я следовал за руководством, но, очевидно, что-то пошло у меня над головой.
2 ответа
Я сделал что-то невежественное и получил форму отправки, которая заставляла страницу обновляться и отбрасывать предыдущий запрос XMLHttpRequest, когда он закончится
Я не верю, что это проблема, связанная с разрешением. В противном случае в консоли появилось бы сообщение об ошибке, сообщающее о проблеме с правами доступа. Я думаю, что-то не так с вашим XMLHttpRequest. Убедитесь, что queryUrl
Вы переходите к функции правильно.
Вы можете использовать Fiddler, чтобы проверить, что не так с вашим запросом.