前言:众所周知,出于安全考虑,XMLHttpReqeust 对象发起的 HTTP 请求必须满足同源策略(same-origin policy)的规定,否则浏览器将会对该请求进行限制。虽然同源策略的实现带来的Web安全的提升,但是却为一些正规的跨域需求带来不便,故此衍生出了若干种绕开同源策略的跨域方案,其中 JSONP 就是使用的比较多的方案,但 JSONP 是一个非官方的跨域协议同时也只支持 GET 请求,而后来 W3C 推出 CORS 协议相比 JSONP 支持更多的方法也允许使用普通 XMLHttpRequest 发送请求,所以我们有理由使用更加现代的跨域方案。关于 CORS 的详细内容可以阅读文章HTTP访问控制(CORS) 。
//#允许向该服务器提交请求的URI,*表示全部允许,在SpringMVC中,如果设成*,会自动转成当前请求头中的Origin response.setHeader("Access-Control-Allow-Origin", "*"); //#允许提交请求的方法,*表示全部允许 response.setHeader("Access-Control-Allow-Methods", "POST, GET,PUT,DELETE,PATCH"); //预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了 response.setHeader("Access-Control-Max-Age", "1800"); //允许Cookie跨域,在做登录校验的时候有用 response.setHeader("Access-Control-Allow-Credentials", "true"); //允许访问的头信息 response.setHeader("Access-Control-Allow-Headers", "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
参考:https://www.jianshu.com/p/d05303d34222
https://www.jianshu.com/p/9203e9b14465