一个jQuery的实例,两个域

问题描述:

我有两个页面:a.example.comb.example.com一个jQuery的实例,两个域

a.example.com包括jQuery的

a.example .com包含一个指向的iframe b.example.com

这两个页面都将document.domain设置为相同的父域example.com

如何使用jQuery的包括来自a.example.com调用$阿贾克斯(网址:{url: “b.example.com”})从B的内部。 example.com iframe?

换句话说:两个页面当前都可以访问彼此的Javascript,但是我不能在不抛出XSS错误的情况下使AJAX调用正常工作。也就是说,在b.example.com上也不包括jQuery。我如何避免两次包含jQuery?

的iframe的内容,例如:

<script> 
document.domain = "example.com"; 

function proxyAjax() { 
    var jQueryParent = parent.$.sub(); 

    // Chrome gives error: XMLHttpRequest cannot load http://b.example.com/. Origin http://a.example.com/ is not allowed by Access-Control-Allow-Origin. 
    jQueryParent.ajax({ 
     url : "http://b.example.com/", 
     success : function() { 
     console.debug("Success"); 
     } 
    }); 
} 

proxyAjax(); 
</script> 
+0

你可以给我们一个你想要运行的代码的例子吗? – loganfsmyth 2012-01-10 22:46:28

设置document.domain不会让你做跨域AJAX调用。如果你并不真正需要的要求从b.example.com发起,你可以这样做:

在a.example.com文件中,有这样的JavaScript函数:

function makeAjaxRequest(callback) { 
    $.ajax({ url: '...', success: callback }) 
} 

然后在b.example.com文档的脚本在a.example.com文档中调用makeAjaxRequest,并在b.example.com中定义回调函数。