imm*_*odi 52 ajax jquery json jsonp cors
我从我的asp.net表单中调用此函数,并在调用ajax时在firebug控制台上收到以下错误.
跨源请求已阻止:同源策略禁止在http://anotherdomain/test.json中读取远程资源.(原因:缺少CORS标题'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;
}
});
Run Code Online (Sandbox Code Playgroud)
我已经做了替代方式,但仍无法找到解决方案.
注意:我没有服务器权限来进行服务器端(API/URL)更改.
538*_*MEO 50
当您尝试访问其他域的资源时,通常会发生这种情况.
这是一个安全功能,可以避免每个人自由访问该域的任何资源(可以访问该域,例如在盗版域上拥有完全相同的网站副本).
响应的标题,即使它是200OK也不允许其他来源(域,端口)访问资源.
如果您是两个域的所有者,则可以解决此问题:
要更改它,您可以在请求的域文件的.htaccess中写入:
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
Run Code Online (Sandbox Code Playgroud)
如果将其设置为所请求文件的响应头,则允许每个人访问资源:
Access-Control-Allow-Origin : *
Run Code Online (Sandbox Code Playgroud)
要么
Access-Control-Allow-Origin : http://www.my-domain.com
Run Code Online (Sandbox Code Playgroud)
和平与代码;)
Gha*_*iya 11
服务器端将其置于以下之上<filename>.php:
header('Access-Control-Allow-Origin: *');
Run Code Online (Sandbox Code Playgroud)
您可以设置特定域限制访问:
header('Access-Control-Allow-Origin: https://www.example.com');
Run Code Online (Sandbox Code Playgroud)
在您的ajax请求中,添加:
dataType: "jsonp",
Run Code Online (Sandbox Code Playgroud)
后行:
type: 'GET',
Run Code Online (Sandbox Code Playgroud)
应该解决这个问题..
希望这能帮助你