javascript跨域请求数据常见的几个变通的方法
跨域问题是由浏览器安全性限制而引起的,可以采取变通的方法解决。
方法一,采用动态创建<script type="text/javascript" src="http://另外一个域名/gaga.aspx?user=muyannian&pwd=nottellyour"></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来指定当前域名所属的域,这样两个域就互为信任,以前试验过有点不可靠,不建议怎么做。