CORS标题'Access-Control-Allow-Origin'缺失

我从我的asp.net窗体中调用这个函数,并在调用ajax时在萤火虫控制台上得到以下错误。

跨源请求被阻止:相同来源策略不允许读取http://anotherdomain/test.json处的远程资源。 (原因:缺lessCORS头'Access-Control-Allow-Origin')。

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; } }); 

我做了替代方式,但仍然无法find解决scheme。

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

当您尝试访问其他域的资源时,通常会发生这种情况。

这是一个安全function,可以避免所有人自由访问该域名的任何资源(例如,在盗版域中可以访问您的网站)。

当代码发送请求时,您的浏览器控制台中应该有一个“200 OK”的响应代码,这意味着资源被访问,但不授予共享该资源的权利。 它通过不允许“Access-Control-Allow-Origin”来实现。

要改变这种情况,你必须在请求的域文件(notyourdomain.com)的.htaccess中写入:

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

另一个解决scheme是手动将文件复制到您的服务器/域:)

和平与守则;)

在你的ajax请求中,增加:

 dataType: "jsonp", 

后行:

 type: 'GET', 

应该解决这个问题..

希望这对你有所帮助

你必须修改你的服务器端代码,如下所示

 public class CorsResponseFilter implements ContainerResponseFilter { @Override public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException { responseContext.getHeaders().add("Access-Control-Allow-Origin","*"); responseContext.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT"); } } 

您的浏览器不允许您的请求..你需要安装你的网页浏览器插件

对于Chrome: https //chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl = zh_CN

对于Firefox https://addons.mozilla.org/zh-CN/firefox/addon/cors-everywhere/