1:跨域的产生
协议,域名,端口,只要有一个以上不同就表示不同的网站,但利用ajax请求时,会出现跨域问题(只在ajax请求中会出现,同步请求,比如a标签或者表单则不会出现错误)、
2:解决方法
前端解决:略
后台解决:
nginx:这种方式解决跨域问题用的人很少了
jsonp:核心原理是使用回调函数,用的人也少了
Cors:一般都是使用这个
3:具体操作
局部解决:写一个controller配置一次
在controller层添加@CrossOrigin 添加之后表示这个类中的所有的方法,都会解决跨域问题
@CrossOrigin(origns={"http://localhost:63343"}) 也可以指定某些端口号
里面有其他参数,例如:
allowedHeaders:表示允许的请求头,如果不写或者换写个*表示允许携带所有的头
allowCredentials:是否携带cookie,默认不携带
全局解决:
①可以在springmvc.xml中写上:
<mvc:cors>
<mvc:mapping path="/**"
allowed-origins="*"
allowed-methods="*"
allowed-headers="*"
allow-credentials="false"/>
</mvc:cors>
②可以在配置类中加入:
public class ControllerConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").
allowedOrigins("*").
allowedMethods("*").
allowedHeaders("*").
allowCredentials(false);
}