跨域:当请求不同域名下的资源时,就会产生跨域请求问题。
跨域是指一个资源请求与其不在同一个域(源)的资源,不在同一个域(源)是指两个域的协议、域名或端口不同。
主要说明自己开发中遇到的跨域问题(基于SpringBoot)
跨域资源共享(CORS)
跨域资源共享(CORS)是浏览器提供的一种跨域协商机制,让前后端协商是否可以发出跨域请求。CORS将请求分为简单请求和复杂请求,对于简单跨域请求,浏览器会直接放行,对于复杂跨域请求,则通过预检机制和后端协商。
简单请求
一个简单请求要满足以下所有条件:
•只能使用GET、HEAD或POST请求方法
•不得手动设置以下头之外的头
•Accept
•Accept-Language
•Content-Language
•Content-Type
•DPR
•Downlink
•Save-Data
•Viewport-Width
•Width
•Content-Type只能是下面的一种
•application/x-www-form-urlencoded
•multipart/form-data
•text/plain
第一种
如果您使用的mvc框架是spring4.2以上的话,一个@CrossOrigin就可以搞定。将@CrossOrigin加到Controller上,那么这个Controller所有的请求都是支持跨域的,代码如下:
@Controller
@CrossOrigin
public class Test {
将@CrossOrigin加到请求方法上,那么这个请求是支持跨域的,代码如下
@CrossOrigin
@RequestMapping("/test")
@ResponseBody
public void test(@RequestParam(required=false, defaultValue="World")
第二种
全局配置,也需要spring4.2以上。
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void test(CorsRegistry registry) {
registry.addMapping("/test-javaconfig").allowedOrigins("http://localhost:8080");
}
};
}