首先,如何在本机模拟跨域问题
- 配置Hosts
127.0.0.1 www.a.com www.b.com - 在线目中,添加测试页面,页面中发起ajax请求本项目接口,接口地址使用www.b.com域名
- 使用www.a.com域名访问测试页面
这样,就模拟了www.a.com 请求www.b.com ,发生跨域
解决跨域问题,主要是在response中添加允许跨域的属性
方式1,添加拦截器
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "*");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Content-Type");
return true;
}
方式2,在请求方法上添加注解
@CrossOrigin(allowCredentials = "true", maxAge = 3600)
RequestMappingHandlerMapper.initCorsConfiguration 会根据该注解判断是否需要添加response头。