我知道有很多关于“Access-Control-Allow-Origin不允许”的问题。错误。
但是我尝试了其中一些没有成功。 :(
一些约会:
已经尝试了几个权限通配符
http://localhost/
http://*/
*://*/
已经尝试过打包和解包扩展程序
目前,manifest.json有
"version": "0.0.1",
"manifest_version": 2,
"devtools_page": "components/devtools.html",
"permissions": [
"http://*/"
]
devtools.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script src="../js/devtools.js"></script>
</body>
</html>
和devtools.js
(function (window) {
"use strict";
var xhr1, xhr2, url;
xhr1 = new window.XMLHttpRequest();
xhr2 = new window.XMLHttpRequest();
xhr1.onreadystatechange = function () {
if (this.readyState === 4) {
console.log('flickr ok');
}
};
xhr2.onreadystatechange = function () {
console.log(this.readyState);
if (this.readyState === 4) {
console.log(this.responseText);
}
};
url = 'https://secure.flickr.com/services/rest/?' +
'method=flickr.photos.search&' +
'api_key=90485e931f687a9b9c2a66bf58a3861a&' +
'text=' + encodeURIComponent('cats') + '&' +
'safe_search=1&' +
'content_type=1&' +
'sort=interestingness-desc&' +
'per_page=20';
xhr1.open('get', url, true);
xhr1.send();
url = 'http://apache.local';
xhr2.open('get', url, true);
xhr2.setRequestHeader('Origin', url);
xhr2.send();
Chrome控制台输出:
1 devtools.js:12
Refused to set unsafe header "Origin" devtools.html:1
XMLHttpRequest cannot load http://apache.local/. Origin chrome-extension://nafbpegjhkifjgmlkjpaaglhdpjchlhk is not allowed by Access-Control-Allow-Origin. devtools.html:1
4 devtools.js:12
flickr ok devtools.js:8
Chrome版本: 28.0.1500.20 dev
感谢任何建议。
答案 0 :(得分:1)
我知道了!
实际上,问题是我正在尝试在devtools页面上执行XHR请求,并且它似乎没有权限绕过像弹出页面这样的跨源访问策略。
Devtools选项卡尝试也不成功。
修改强>
阶段许可是否相关。不是通配符 - 权限。正如我所说,我已经设法在某些域上执行查询,但没有明确地在我的权限数组上。
问题实际上在于脚本运行的类型。
相同的脚本(如果用作弹出窗口)工作正常。所以,我也尝试过成功的后台脚本!我遇到了devtools_page和相关没有这种权限的问题......
Developer Tools窗口中扩展页面可用的API包括上面列出的所有devtools模块和chrome.extension API。其他扩展API不适用于Developer Tools页面,但您可以通过向扩展的后台页面发送请求来调用它们,类似于在内容脚本中完成的操作。
http://developer.chrome.com/extensions/devtools.html
该级别的脚本拒绝非显式交叉xhrs。
解决了将请求放入后台脚本并使用messages api。
的问题谢谢!