jquery - CORS header 'Access-Control-Allow-Origin' 丢失

标签 jquery ajax json cors jsonp

我从我的 asp.net 表单调用此函数,并在调用 ajax 时在 Firebug 控制台上收到以下错误。

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://anotherdomain/test.json. (Reason: CORS header Access-Control-Allow-Origin missing).

var url= 'http://anotherdomain/test.json';
        $.ajax({
            url: url,
            crossOrigin: true,
            type: 'GET',
            xhrFields: { withCredentials: true },
            accept: 'application/json'
        }).done(function (data) {
            alert(data);                
        }).fail(function (xhr, textStatus, error) {
            var title, message;
            switch (xhr.status) {
                case 403:
                    title = xhr.responseJSON.errorSummary;
                    message = 'Please login to your server before running the test.';
                    break;
                default:
                    title = 'Invalid URL or Cross-Origin Request Blocked';
                    message = 'You must explictly add this site (' + window.location.origin + ') to the list of allowed websites in your server.';
                    break;
            }
        });

我已经采取了替代方法,但仍然找不到解决方案。

注意:我没有服务器端(API/URL)更改的服务器权限。

最佳答案

当您尝试访问另一个域的资源,并且该另一个域的 cors 源白名单中没有您的域时,通常会发生这种情况。

要访问域中的资源,必须事先获得该域的“cors origin”策略的授权。

这是一项安全功能,可避免其他域使用您服务器上的资源,或者有助于防止 website spoofing

如果您可以控制两个域服务器,则可以解决此问题:

解决方案1:通过.htaccess

您可以将其写入请求的域文件的.htaccess中:

=> 不推荐允许所有域

    <IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
    </IfModule>

=> 推荐仅允许预期域

    <IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin 'https://my-domain.example'
    </IfModule>

解决方案 2:以正确的方式设置 header

如果您将其设置到所请求文件的响应 header 中,您将允许每个人访问资源:

=> 不推荐允许所有域

Access-Control-Allow-Origin : *

或者

=> 推荐仅允许预期域

Access-Control-Allow-Origin : http://www.my-domain.example

关于jquery - CORS header 'Access-Control-Allow-Origin' 丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41067978/

相关文章:

javascript - 如何从目录中读取文件并将其作为 JSON 发送给客户端?

使用 Decodable 进行 JSON 解析

jQuery 切换 slider

jquery - AJAX导致IIS死掉?

javascript - 解析私有(private)文件夹(WEB-INf)中的xml

javascript - Ajax发送大数据到服务器

javascript - 非 IIFE 的模块

c# - 我如何在 C# .NET(win7 手机)中读入 'nested' 和 'DataContractJsonSerializer' 的 Json 文件?

asp.net-mvc - 在 Controller 中创建 jstree jquery_ajax

Jquery slideToggle 和悬停问题