文档介绍:跨域引用资源技术及其技术选型一、源同源策略是浏览器都必须遵循的策略,这就限制了js去调用和修改非同域下的数据。试想如果没有这个策略,在另外一个域的js就能轻易修改当前你正在调用的页面。那就天下大乱,亳无安全可言了。遵循同源策略就对非同域的资源调用加上了许多限制。我们知道css、image^及js本身(指文件本身)是可以跨域引用的。但html文件和js具体的数据调用如ajax是不能跨域了。还有,所谓同源是指两个页面的协议、域名、端口完全相同,否则都算跨域。通常我们会有很多二级域名,,否则也认为是跨域。二、典型的资源共享案例1) 、html做为模板,想被各系统共用。(主次域名)2) 、公开的数据接口想被各系统调用。(不同域名)3) 、请求第三方url结果。(不同域名)这里先列出这三种需求,因为不同的需求,技术选型也不一样。三、Cross-OriginResourceSharing这是W3C推出的跨域资源标准规范,其核心部分是通过HTTP请求头来控制跨域的安全性,主要有两个头描述,一是Origin:描述当前的资源是可用来跨域请求的;ess-Control-in:用来描述哪些域是可以访问该资源,允许设置多个。由于IE8之前的版本及其他浏览器稍低些的版木不遵循此规范,从当前来看其应用还不广泛,因此暂不考虑用此方案来解决上述三个案例。如要对Cross-OriginResourceSharing进官方进一步了解:http:〃/cors/。四、跨域请求资源方案1、配置反向代理比如你的资源在ip/resource/,,把ip/。,就直接变成地,址http://resocirce./resocrce/,也址变成ource/。实际上如果你有其他不同的域,比如把资源配置一份到拥有几个域并配置它们。结论:通过中间件配置让共用资源变成多种域名下可访问是解决跨域的一种有效方法。但方案受限于共享的资源完全是自己能控制的。还有像tomcat、jetty本身一般不做反向代理,如果要在开发环境查看效果和调试,就得给开发环境也安装nginx/apache,增加了开发环境的复杂性,考虑到整个团队实施问题,在实际中我们团队没有采用通过nginx/apache配置这种方式。2、IFrame解决跨域问题及其不足之处IFrame解决跨域问题,只限于a、b是主次域名,。我们设定a是parent*放在a下的iframe源。首先在b页面加上一段<script>$(document).attr("domairT,"");</script>(本文所有js代码以jquery表示)。在a下编写js代码:$jq(document).attr("domain”,'*);[ //jquery找不到object,会自动创建此对象$jq(n<iframeid='dddiframe'></if