我有两个页面: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 include从b.example.com iframe中调用$.ajax({url:“b.example.com”})?
换句话说:两个页面当前都可以访问彼此的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文档中,使用b.example.com中定义的回调函数在a.example.com文档中调用makeAjaxRequest的脚本.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。