什么是跨域就不说了,百度可以查到一堆文章。
这里要说的是,跨域的几个场景:
1、Ajax跨域
Ajax跨域跟前端没有什么关系,只是后端服务器的安全限制,但也可在前端处理。常见的处理方式分为:
1)前端处理
通过JSONP的方式,这里不细讲。大概的思路是,借助<script>标签不存在跨域的“BUG”,模拟向另一个服务发请求
2)后端处理
有几种方式:
a)在web.xml配置过滤器,在过滤器中,给每个Response设置Header,增加Access-Control-Allow-Origin之类的头配置项,百度可以找到很多该类的文章
b)如果使用spring-mvc,可在mvc配置文件中加入<mvc:cors>标签,百度也可以找到很多该类文章
2、iframe跨域
这个之前没怎么注意过这个问题,直到用到spring-security的时候才注意到该问题。
spring-security的配置里有个<security:headers>的配置项可以配置<security:frame-options>标签。意思是,是否允许我页面中的iframe的跨域,不用spring-security的时候,默认是允许的
3、iframe跨域时数据传输
PostMessage
参照: https://blog.csdn.net/lvchengbo/article/details/54911056
4、iframe跨域数据访问
跨域数据访问时,因为浏览器为了安全,禁止了不同域访问。因此只要调用与执行的双方是同域则可以相互访问。否则会有如下报错
Uncaught SecurityError: Blocked a frame with origin "http://localhost" from accessing a frame with origin "http://127.0.0.1". Protocols, domains, and ports must match
怎么解决,参照:https://blog.csdn.net/fdipzone/article/details/17619673,https://www.cnblogs.com/boystar/p/6909214.html