Я недавно заинтересовался расширениями Google Chrome, поэтому начал изучать основы.
Используя страницу «Начало работы» , я решил прочитать все и написать весь код локально, чтобы создать распакованное расширение.
Я гарантировал, что все файлы существуют, и что код был точно таким же, как указано на странице «Начало работы». По какой-то причине я получаю следующую ошибку:
XMLHttpRequest cannot load http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=90485e931f687a9b9c2a66bf58a3861a&text=hello%20world&safe_search=1&content_type=1&sort=relevance&per_page=20.
Origin chrome-extension://hcijmehjcijoldbgapgllpmhebeaiihh is not allowed by Access-Control-Allow-Origin.
Я удостоверился, что мои разрешения были установлены для "http://api.flickr.com/",, как указано на странице" Начало работы ", и почти для любой другой документации, которую я мог найти. Я также знаю, что такое Access-Control-Allow-Origin Это правило, касающееся способа, которым содержит заголовок запроса. Однако я не уверен, почему я получаю эту ошибку в этом случае, учитывая надлежащие разрешения в моем файле manifest.json. Я подумал, что, возможно, это связано с что-то локально, возможно, проблема с конфигурацией или еще что-то - но я понятия не имею, где еще искать.
Мой вопрос: как мне исправить эту ошибку?
Я использую Google Chrome версии 15.0.874.121 m
Для полноты, здесь используется код:
manifest.json:
{
"name": "My First Extension",
"version": "1.0",
"description": "The first extension that I made.",
"browser_action": {
"default_icon": "icon.png",
"popup": "popup.html"
},
"permissions": [
"http://api.flicker.com/"
]
}
popup.html:
body {
min-width:357px;
overflow-x:hidden;
}
img {
margin:5px;
border:2px solid black;
vertical-align:middle;
width:75px;
height:75px;
}
var req = new XMLHttpRequest();
req.open(
"GET",
"http://api.flickr.com/services/rest/?" +
"method=flickr.photos.search&" +
"api_key=90485e931f687a9b9c2a66bf58a3861a&" +
"text=hello%20world&" +
"safe_search=1&" + // 1 is "safe"
"content_type=1&" + // 1 is "photos only"
"sort=relevance&" + // another good one is "interestingness-desc"
"per_page=20",
true);
req.onload = showPhotos;
req.send(null);
function showPhotos() {
var photos = req.responseXML.getElementsByTagName("photo");
for (var i = 0, photo; photo = photos[i]; i++) {
var img = document.createElement("image");
img.src = constructImageURL(photo);
document.body.appendChild(img);
}
}
// See: http://www.flickr.com/services/api/misc.urls.html
function constructImageURL(photo) {
return "http://farm" + photo.getAttribute("farm") +
".static.flickr.com/" + photo.getAttribute("server") +
"/" + photo.getAttribute("id") +
"_" + photo.getAttribute("secret") +
"_s.jpg";
}