js使用ajax跨域没有权限的解决方法

在javascript中经常会使用ajax,但就是跨域这个问题搞得好多人都不知道怎么办,挺烦人,今天看到一个博客有一个解决方案,很不错,本人已测试真的可以。
由于安全性问题, ajax在进行请求数据时,不能跨域请求. 
比如 在 www.a.com 下的页面, 无法ajax请求www.b.com/ajax.php的内容. 
尽管这样的需求不多,但遇到了怎么办? 
这里给出一个JS模拟ajax的方式实现跨域, 但仅仅局限于GET!
在 <script> 标签中, src的属性是可以设置非本域下的地址的. 借助此特点,即可模拟ajax的方式实现跨域. 
假设 www.a.com 域名下的程序 需要通过ajax方式提交数据到 www.b.com 下的login.php?username=*&passwod=*实现登陆判断. 
实现方式如下: 
在www.a.com内动态创建JS的方式来加载www.b.com的内容,代码如下 
JavaScript代码

//此代码在www.a.com下   
var head = document.getElementsByTagName("head")[0];       
var js = document.createElement("script");       
js.src = "http://www.b.com/login.php?username=*&passwod=*";       
js.onload = js.onreadystatechange = function()       
{       
    if (!this.readyState || this.readyState == "loaded" || this.readyState == "complete")       
    {   
         head.removeChild(js);   
         //JS加载完毕了. 类似于ajax请求完成.   
         //执行是否登陆成功的判断   
    }       
}       
head.appendChild(js);  

 
这只是一个简单的例子,需要b.com下的login.php做好配合,login.php通过GET取得传入值,并生成JS的登陆标记.
JS加载完成后,根据JS标记判断登陆的状态,提示登陆成功或失败.即可完成要求,代码兼容常见浏览器. :)
当然缺陷也很明显,只能支持GET的方式提交数据.
下一次我会在说说ajax跨域POST的方法.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值