ajax跨域问题的另类解决方法


======================================================
注:本文源代码点此下载
======================================================

我们知道浏览器基于安全的考虑,ajax只能访问本域下的资源,而不能跨域访问。也就是说,domain1.com站点中的ajax只能访问domain1.com站点下的资源,而不能跨域访问domain2.com站点中的资源.这就是ajax跨域问题.

但如果要访问不同域的数据时,由于浏览器的安全设置,xmlhttp没有权限获取数据,而iframe没有权限将获取的数据传递给父窗口,似乎没有其它解决办法。

在网上提到的方法,不外乎这几种:

1. 如果要获取的数据位于同一个根域但是不同子域时,可以在脚本中指定document.domain为父域。

2. 如果要获取的数据位于不同的根域时,则可以在服务器上写一个脚本作为代理,由服务器上的脚本获取不同域的数据,然后传递给在同一个域中的网页。

3.借用script的src动态属性,因为src对域没有任何限制,但这种方法的缺点是服务器返回只能是javascript代码,这样的缺陷也就限制了异域名必需是可控的。

另外,我发现还有一种办法可以解决这个问题。

我们知道,域名只不过是为了便于人们记忆ip而设立的一个助记符而已,而浏览器判断跨域也只是判断是否在一个子域内,我们完全可以自己定一个dns记录,把一个子域名指向倒我们需要的服务器ip上去。换句话说,我们可以使用一个域名,访问多个服务器。

例如:

我有一个域名是boolean.net.cn,它指向的ip是:69.89.31.51,而我想访问yahoo.com上的数据,我完全可以新建一个dns记录,指向yahoo.com的ip。我通过ping www.yahoo.com.cn获得ip地址为202.165.102.205,在自己的dns记录中新建一个dns记录yahoo,指向他的ip为 202.165.102.205,这样,我访问http://yahoo.boolean.net.cn就相当于访问yahoo网站一样了,这样的话,问题就被转移到同一个子域下的数据获取了。

关于同一个子域下的数据交换,大家可以参考http://www.lhelper.org/tech/communicate_between_domains.html中的解决办法,在这里我就不多说了。

参考页面

1. http://blog.csdn.net/conis/archive/2007/08/05/1726736.aspx

2. http://www.lhelper.org/tech/communicate_between_domains.html

文章出处:diy部落(http://www.diybl.com/course/1_web/webjs/200798/71044.html)


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值