子域ajax调用也是跨域的。如果它们指向同一个地方(如example.com和www.example.com),情况也是如此。它们(通常)指向同一地方。我们认为它们是一样的东西。但是对于Ajax调用,它被认为是跨域的。
我想使用jquery ajax()
方法在subdomain
上调用AJAX:我叫它来自http://domain.com/
$.ajax({
crossDomain: true,
url:'https://sub.domain.com/',
success: function(response) {
alert('ok');
},
error: function(resp) {
console.log(resp);
}
});
但它不起作用,用resp == {
status:0, readyState: 0, responseText : '', statusText: 'error'
}
调用错误函数
请在跨域ajax上进行搜索,您会发现很多内容。
您可以为此目的使用CORS。
示例代码:
jQuery.support.cors = true;
function CrosDom_ajax(url) {
if (window.XDomainRequest
&& $.browser.msie
&& $.browser.version < 10) {
xdr = new XDomainRequest();
if (xdr) {
xdr.onload = function () {
alert(xdr.responseText);
};
xdr.open("get", url);
xdr.send();
}
}
else {
$.ajax({
url: url,
success: function (response) {
},
error: function (data) {
}
});
}
}
您还需要在服务器端编写以下代码,以允许跨域访问
Response.AppendHeader("Access-Control-Allow-Origin", "*");