我有一个类似下面的域名。
我有两个子域,如下所示。
我想从foo.jayshit.info到bar.jayshit.info进行jQuery ajax调用,以获取一些HTML或将一些数据更新回服务器。
我知道由于同源政策并非那么容易。而且我也不想使用 JSONP 。因为我希望我的ajax调用具有 async:false ,如下所示。
$.ajax({
type: "POST",
cache: false,
url: tURL,
data: tData,
async: false
});
如果有人遇到一些解决方法,请告诉我。
提前致谢。
此致
答案 0 :(得分:5)
由于您可以控制其他子域,因此您可以从bar.jayshit.info发送this header:
Access-Control-Allow-Origin: http://foo.jayshit.info
Access-Control-Allow-Methods: GET, POST
现代浏览器尊重这些标头并允许您发出请求。对于IE8,您需要使用jQuery不支持的XDomainRequest
。
答案 1 :(得分:0)
http://foo.jayshit.info和http://bar.jayshit.info是两个不同的域名,因此您需要跨域请求,来自Google的第一个链接:http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/
答案 2 :(得分:0)
使用
dataType: "jsonp"
...
$.ajax({
type: "POST",
dataType: "jsonp",
cache: false,
url: tURL,
data: tData,
async: false
});
更多信息:
答案 3 :(得分:0)
答案 4 :(得分:0)
答案是CORS和JSONP。 IE不支持CORS,你必须等待IE10才能得到它。 JSONP只允许您进行跨域GET而不是POST,PUT和DELETE。 CORS确实解决了这些问题,所有其他浏览器都支持它。
您可以解决此问题的另一种方法是在您的网站中构建一个代理,该代理将从您的服务器进行调用。这将使您了解浏览器中的跨域问题。如果你想知道的话,这些都是安全预防措施。