关于document.domain+iframe实现跨子域名
昨天要做一个网站的二次开发 需要实现子域名功能 通过地址重写实现后 发现ajax出现的跨域问题 不想改动太大于是采用了document.domain+iframe的方式
首先在头模板中的head内添加
document.domain='123.com'
在body下添加隐藏iframe
<iframe id='iframe' style='display:none' src='a.htm'></iframe>
其中a.htm的内容为
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> <script type="text/javascript"> document.domain = '123.com'; </script>
找到原来调取ajax的地方 例如 原来一处为
$.post(.....)
那么我们改为
var iframe=document.getElementById('iframe').contentWindow;
iframe.window.jQuery.post(.....)
GET方式的同理
这里说几个注意的细节
1、如果你的ajax发送的url是相对定位的 比如只写了个index.php 那么他相对的是a.htm所在的位置 而不是你发起ajax的文件位置
2、$(document).ready(function(){}) 中的ajax要注意 这里要改成iframe的加载完成事件 即改为 $("#iframe").load(function(){})