一个jQuery的实例,两个域
问题描述:
我有两个页面:a.example.com和b.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>
答
设置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中定义回调函数。
你可以给我们一个你想要运行的代码的例子吗? – loganfsmyth 2012-01-10 22:46:28