我尝试从服务器加载 json 文件XMLHttpRequest
。
但我只得到status==0
Chrome 开发控制台显示:“(已取消)”
我可以用这个(简化的)代码重现这个:
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/*" ],
我读过很多关于这个问题的文章,但没有找到有效的解决方案。
(此时主页没有重新加载,也没有重定向)
有什么建议么??
您收到的错误表明已执行重定向到与您声明的任何权限都不匹配的 URL。
要验证我的陈述,请添加*://*/*
or <all_urls>
权限清单文件,您会注意到请求已成功完成。
要确定遵循哪些重定向,请执行以下步骤:
- 打开开发者工具,转到网络选项卡。
- 将 URL 粘贴到多功能框中,然后按 Enter 键
- 阅读开发者工具中的 URL。
![](https://i.stack.imgur.com/KSzjQ.png)
正如你在上一张图片中看到的,dl.dropbox.com
实际上重定向到dl.dropboxusercontent.com
。必须将此域添加到清单文件的权限部分才能解决问题:
"permissions": [
"http://theOtherWorkingServer.com/*",
"*://dl.dropbox.com/*",
"*://dl.dropboxusercontent.com/*"
],
(方案中的通配符匹配http
and https
- see 匹配模式)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)