我有两个页面: a.example.com 和 b.example.com
a.example.com 包含jQuery
a.example.com 包含指向 b.example.com 的iframe
这两个页面都将document.domain设置为相同的父域 example.com
如何使用 a.example.com 中的jQuery包含从内部调用$ .ajax({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 :(得分:1)
设置document.domain
将不允许您进行跨域AJAX调用。如果您真的不需要来自b.example.com的请求,您可以这样做:
在a.example.com文档中,有这个JavaScript函数:
function makeAjaxRequest(callback) {
$.ajax({ url: '...', success: callback })
}
然后在b.example.com文档中,使用b.example.com中定义的回调函数,在a.example.com文档中调用makeAjaxRequest
的脚本。