10月25

js跨域请求数据常见的解决方法

| |
00:01Web开发  From: 本站原创
         跨域问题是由浏览器安全性限制而引起的,不同浏览器的安全性限制还不一样,当然啦我们可以采取变通的方法来解决这个跨域的问题。

方法一、采用动态创建<script type="text/javascript" src="http://另外一个域名/getdata.aspx?user=Heck&pwd=Heck"></script>
而这个aspx可以返回一段JS数据,来回调调用页面中的一个JS方法  比如说  showmessage("返回成功"); 这样可以达到隐性提交的目的。(在跨域下可以实现JAX同样的效果)。但这种方法由于URL长度的限制,不能提交太大的数据,和不能进行POST请求,而且你还要又B域的输出控制权。

方法二、直接把表单提交,提交的页面处理完毕后他直接太跳转下,同时把相关信息在提交给相同的域名下的一个文件,由本域名下的文件做输出这样其实就是同域了。不过这种方法编程会很复杂,流程控制很麻烦。

方法三、采用ASPX文件做桥的方式,比如说 你想在A上请求B域名上的文件b,则你可以通过在A上请求A上的文件a,a在服务器端请求B下的b,a文件相当于做了个中装,这样在有些网站上是不可取的,因为效率不高,相应很慢,还耗费服务器带宽等资源。


方法四、采用FLASH做桥,这种情况只能用在你可以控制A域和B域的情况,因为你需要在B域的根目录上放置一个crossdomain.xml,否则flash不能进行跨域请求。as中是可以做HTTP的get和POST请求的,甚至可以实现socket连接(很多的在线TM和无刷聊天室都是借助FLASH来实现的),如果处理的好可以用他来代替AJAX不能处理跨域的问题

方法五、如果你的域名是另外一个域名的子域名则可以通过设置document.domain来指定当前域名所属的域,这样两个域就互为信任,以前试验过有点不可靠,不建议怎么做。
这几个方法是在实际项目过程总碰到的,可能有不对的地方,大家不要拍我啊,当然可能你还会有其它的方法,也许会更好。




来源:Heck's Blog
地址:https://www.heckjj.com/js-resolve-the-cross-domain-html/
转载时须以链接形式注明作者和原始出处及本声明,否则将追究法律责任,谢谢配合!
Tags: ,
阅读(2165) | 评论(0) | 引用(0)