У меня возникли трудности с реализацией моего первого расширения Chrome.У меня нет большого опыта использования JavaScript и HTTP, поэтому, пожалуйста, простите меня, если я не вижу смысла.
Расширение chrome можно найти здесь и содержит три файла: addratings.js
, icon.png
и manifest.json
.
addratings.js
выглядит следующим образом:
var http = new window.XMLHttpRequest();
http.onreadystatechange = function(data) {
if (http.readyState == 4) {
alert(JSON.stringify(http));
}
}
var url = "http://myanimelist.net/api/anime/search.xml?q=Madoka";
http.open('GET', url, true);
http.send();
Файл manifest.json
выглядит следующим образом:
{
"name": "Anime Ratings",
"version": "1.0",
"description": "Shows anime ratings next to anime titles in a Web page.",
"permissions": [
"cookies",
"http://myanimelist.net/*"
],
"content_scripts": [ {
"matches": ["http://en.wikipedia.org/wiki/Category:Anime_of_2011"],
"run_at": "document_end",
"js": ["addratings.js"]
} ]
}
Когда я запускаю сценарий (он запускается при переходе на эту страницу ), полученный http-ответ выглядит следующим образом:
{"statusText":"Unauthorized","responseText":"Invalid credentials","response":"Invalid credentials","onabort":null,"readyState":4,"upload":{"onloadstart":null,"onabort":null,"onerror":null,"onload":null,"onprogress":null},"onerror":null,"status":401,"responseXML":null,"onprogress":null,"onload":null,"withCredentials":false,"onloadstart":null,"responseType":""}
Я перехватил свой HTTP-запрос с помощью Wireshark и подтвердил, чтоHTTP-заголовок «Авторизация» отсутствует.Это объясняет сообщение об ошибке.
Однако после прочтения этого урока я понял, что заголовок авторизации должен был быть включен в запрос, потому что я добавил домен в manifest.jsonfile.
Итак, как мне предоставить заголовки аутентификации для этого http-запроса?