关闭

javascript跨域请求数据常见的几个变通的方法

标签: javascriptflash服务器socketajax浏览器
2648人阅读 评论(0) 收藏 举报
跨域问题是由浏览器安全性限制而引起的,可以采取变通的方法解决。
方法一,采用动态创建<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来指定当前域名所属的域,这样两个域就互为信任,以前试验过有点不可靠,不建议怎么做。
这几个方法是在实际项目过程总碰到的,,可能有不对的地方,大家不要拍我啊 。 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:95695次
    • 积分:1338
    • 等级:
    • 排名:千里之外
    • 原创:37篇
    • 转载:1篇
    • 译文:0篇
    • 评论:20条
    文章分类
    最新评论