我从我的www.example.com表单调用这个函数,在调用ajax时在firebug控制台上得到以下错误。asp.net form and getting following error on firebug console while calling ajax.
跨来源请求被阻止:同源策略不允许读取位于http://anotherdomain/test.json的远程资源。(原因:CORS标题"访问控制-允许-来源"缺失)。
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)更改。
8条答案
按热度按时间1tuwyuhd1#
当您尝试访问其他域的资源时,通常会发生这种情况。
这是一个安全功能,用于避免每个人自由访问该域的任何资源(例如,可以访问您的网站在盗版域上的完全相同的副本)。
响应的头,即使它是200OK也不允许其他源(域、端口)访问资源。
如果您是两个域的所有者,则可以解决此问题:
溶液1:通过
.htaccess
要改变这一点,您可以将其写入requested domain文件的
.htaccess
中:如果您只想授予对一个域的访问权限,
.htaccess
应如下所示:溶液2:以正确的方式设置标题
如果您在请求文件的响应标头中设置此属性,您将允许所有人访问资源:
或
x4shl7ld2#
服务器端将其放在
<filename>.php
之上:您可以设置特定的域访问限制:
li9yvcax3#
在你 AJAX 请求中,添加:
行后:
应该能解决这个问题。
希望这对你有帮助
plupiseo4#
如果你在后端使用Express js,你可以安装包cors,然后在你的服务器上使用它,如下所示:
这解决了我的问题
fd3cxomn5#
这对我很有效:
创建php文件,将下载另一个域页面的内容,而不使用js:
然后在ajax(jquery)中运行它。
fhg3lkii6#
您必须修改服务器端代码,如下所示
ftf50wuq7#
你一定已经知道为什么你会得到这个问题后,通过以上的答案。
您只需要在服务器端添加上面的代码行。
olqngx598#
必要时,您可以使用此Chrome扩展在本地浏览器上禁用CORS。
允许CORS:访问控制-允许-原点Chrome扩展