Google chrome extension 以下是;“入门”;示例,但获取访问控制允许原点错误

Google chrome extension 以下是;“入门”;示例,但获取访问控制允许原点错误,google-chrome-extension,xmlhttprequest,Google Chrome Extension,Xmlhttprequest,我最近对谷歌Chrome浏览器的扩展产生了兴趣,所以我开始研究它的基础知识 使用,我开始阅读整个内容,并在本地编写整个代码,以创建一个未打包的扩展 我确保所有文件都存在,并且代码与“入门”页面上提供的代码完全相同。由于某些原因,我收到以下错误: XMLHttpRequest cannot load http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=90485e931f687a9b9c2a66bf58a

我最近对谷歌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. 无法加载XMLHttpRequesthttp://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. 起源铬-extension://hcijmehjcijoldbgapgllpmhebeaiihh 访问控制允许原点不允许。 我确保我的权限已设置为“http://api.flickr.com/,以及我能找到的几乎所有其他文档。我还知道什么是访问控制允许源规则,处理请求头包含的方式。但是,如果在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/" ] } 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"; } { “名称”:“我的第一个分机”, “版本”:“1.0”, “描述”:“我做的第一次扩展。”, “浏览器操作”:{ “默认图标”:“icon.png”, “popup”:“popup.html” }, “权限”:[ "http://api.flicker.com/" ] } popup.html:

{ "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/" ] } 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"; } 身体{ 最小宽度:357px; 溢出x:隐藏; } img{ 保证金:5px; 边框:2件纯黑; 垂直对齐:中间对齐; 宽度:75px; 高度:75px; } var req=新的XMLHttpRequest(); 请求打开( “得到”, "http://api.flickr.com/services/rest/?" + “method=flickr.photos.search&”+ “api_key=90485e931f687a9b9c2a66bf58a3861a&”+ “text=hello%20world&”+ “safe_search=1&”+//1是“safe” “content\u type=1&”+//1是“仅限照片” “sort=relevance&+//另一个好的方法是“interestingnessdesc” “每页=20”, 正确的); req.onload=显示照片; 请求发送(空); 函数showPhotos(){ var photos=req.responseXML.getElementsByTagName(“照片”); for(var i=0,photo;photo=photos[i];i++){ var img=document.createElement(“图像”); img.src=constructImageURL(照片); 文件.正文.附件(img); } } //见:http://www.flickr.com/services/api/misc.urls.html 函数constructImageURL(照片){ 返回“http://farm“+photo.getAttribute(“农场”)+ “.static.flickr.com/”+photo.getAttribute(“服务器”)+ “/”+photo.getAttribute(“id”)+ “u”+photo.getAttribute(“秘密”)+ “_.s.jpg”; }
更仔细地查看manifest.json中的权限。我想你会有更好的运气:

  "permissions": [
    "http://api.flickr.com/"
]

非常感谢你。结果是一个愚蠢的打字错误!闪烁->flickr。现在我觉得自己很愚蠢。扩建工程现在开始运作。