我编写了一个从本地文件系统提供给浏览器的Web应用程序。我试图使用jQuery&#39的ajax方法向另一个域发出HTTP GET请求:
$.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执行地点的明确解释;我希望它是服务器端错误,而不是客户端错误。
知道我的浏览器正在获取我要求的数据但是不允许我使用它,这令人沮丧。有没有解决方法?
答案 0 :(得分:1)
CORS取决于浏览器和服务器。浏览器应该阻止内容;服务器应该遵守OPTIONS动词并返回正确的CORS响应。