我编写了一个web应用程序,该应用程序从本地文件系统提供给浏览器。我试图让使用jQuery的Ajax方法的HTTP GET请求到另一个域:Javascript CORS被阻止但仍显示数据包捕获中的数据
$.ajax({
type: 'GET',
url: "http://alerts.weather.gov/cap/us.php?x=0",
dataType: "text",
data: null,
success: function(data){
var x = data;
},
error: function(data, err) {
var x = err;
}
});
在开发者控制台,我得到了错误,“Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://alerts.weather.gov/cap/us.php?x=0. (Reason: CORS header 'Access-Control-Allow-Origin' missing).
”
现在我明白这意味着什么,和这个错误的目的。
下面是一个非常奇怪的部分:当我用Wireshark捕获网络流量时,我可以看到远程服务器实际上提供了我请求的内容。
CORS的工作方式是什么?它完全取决于客户端从服务器接收数据,然后拒绝使用它?我还没有找到CORS执行的明确解释;我期望它是一个服务器端错误,而不是客户端错误。
知道我的浏览器正在获取我请求的数据但不让我使用它,这是令人沮丧的。有没有解决方法?
解决方法将构成严重的安全漏洞。 – Pointy
这就是为什么某些类型的失败的xdomain ajax请求仍然在第三方站点日志上留下日志条目的原因; (非飞行前)ajax基本上只写入第三方URL,但很多编码人员并没有意识到遥控器得到它,因为浏览器覆盖了一个错误... – dandavis