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/