多语言展示
当前在线:967今日阅读:91今日分享:37

跨域通信的简单分享

在工作的一段时间里,给我最大的感触就是:公司有非常多的子系统,而且子系统与子系统之间交互非常的频繁,拥有封装了HttpClient及增加了路由功能的R系统(该系统目的就是满足现下系统与系统之间通信频繁的问题),但是大家都知道HttpClient只限于服务器端使用,当我们想用客户端脚本,比如Javascript来调用其他系统(不同域)的接口时,就会出现跨域通信的问题。那么为什么会出现跨域通信问题呢?当遇到跨域通信问题时,我们又有几种解决方案呢?另外,跨域通信又会引发哪些潜在的问题呢?下面我将慢慢解释这几个问题。一、产生跨域通信问题的本质原因'无规矩不成方圆',这句话大家都知道,当我们在互联网的浪潮中冲浪的时候,我们无需考虑任何安全问题。因为互联网为了网民的安全,定制了很多策略(规矩),有一种策略叫同源策略,是每一种浏览器都必须实现并遵守的!那么同源策略到底限制了什么呢?同源策略规定:不同域的客户端脚本在没有明确授权的情况下,不能读写对方的资源(好比你不能碰别人的女朋友一样),这里有几个关键字很有必要解释一下。1、域、子域、同域所谓同域(源)指:当A域与B域具有相同的协议、域名、端口时称为同域(源)2、客户端脚本:由浏览器解释和执行的脚本语言,比如现下流行的Javascript,ActionScript,之前流行的VBScript3、授权:服务端可以对客户端的访问进行授权,那么客户端也可以授权,比如HTML5中新标准中,当目标站点返回HTTP响应头Access-Control-Allow-Origin:http://www.cnblogs.com(A),那么浏览器就允许A站点去访问目标站点。4、读写权限:Web上的资源很多,比如HTTP请求头的Referer只读,cookie即可写亦可读5、资源:资源是个广泛的概念,只要是数据都可以认为是资源。同源策略里的资源特指Web客户端的资源(HTTP头,DOM树..)在这里特别要注意的是,同源策略虽然限制了客户端的资源,但对静态的资源文件是没有加以限制的,例如客户端脚本文件,样式CSS文件、图片,flash资源等静态文件。(