微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 一个jQuery实例,两个域

我有两个页面: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 举报,一经查实,本站将立刻删除。

相关推荐