Аутентификация с расширением Chrome - PullRequest
3 голосов
/ 06 августа 2011

У меня возникли трудности с реализацией моего первого расширения 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-запроса?

1 Ответ

2 голосов
/ 06 августа 2011

Переместите ваш код XMLHttpRequest из addratings.js на фоновую страницу.Используйте передачу сообщений для связи между скриптом содержимого и фоновой страницей (чтобы сообщить фоновой странице, какой поиск выполнить, и получить результаты обратно).

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