Javascript CORS被阻止但仍显示数据包捕获中的数据

时间:2016-01-08 01:48:30

标签: javascript cors

我编写了一个从本地文件系统提供给浏览器的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执行地点的明确解释;我希望它是服务器端错误,而不是客户端错误。

知道我的浏览器正在获取我要求的数据但是不允许我使用它,这令人沮丧。有没有解决方法?

1 个答案:

答案 0 :(得分:1)

CORS取决于浏览器和服务器。浏览器应该阻止内容;服务器应该遵守OPTIONS动词并返回正确的CORS响应。