我尝试从XMLHttpRequest
的服务器加载json文件。
但我只得到status==0
并且chrome dev控制台说:“(已取消)”
我可以用这个(简化的)代码重现这个:
var httpReq = new window.XMLHttpRequest();
httpReq.onreadystatechange = function(data) {
if (httpReq.readyState == 4) {
alert(httpReq.status);
}
}
httpReq.open("GET", "http://dl.dropbox.com/[...]/data.json");
httpReq.send(null);
此代码停止工作,因为它在扩展上下文中。 同样的功能也用于从其他服务器(也是跨域)加载文件,没有任何问题。
这是清单部分:
"permissions": [ "http://theOtherWorkingServer.com/*", "http://dl.dropbox.com/*", "https://dl.dropbox.com/*" ],
我已经阅读了很多关于这个问题,但没有找到可行的解决方案。 (主页面没有重新加载,此时也没有重定向)
有什么建议吗?
答案 0 :(得分:3)
您收到的错误表示已执行重定向,该网址与您声明的任何权限都不匹配。
要验证我的语句,请将*://*/*
或<all_urls>
权限添加到清单文件中,您会注意到请求已成功完成。
要确定遵循哪些重定向,请执行以下步骤:
正如您在上一张图片中看到的那样,dl.dropbox.com
实际上已重定向到dl.dropboxusercontent.com
。必须将此域添加到清单文件的权限部分才能解决问题:
"permissions": [
"http://theOtherWorkingServer.com/*",
"*://dl.dropbox.com/*",
"*://dl.dropboxusercontent.com/*"
],
(计划中的通配符匹配http
和https
- 请参阅match patterns)