赞
踩
跨域是指:浏览器A从服务器B获取的静态资源,包括Html、Css、Js,然后在Js中通过Ajax访问C服务器的静态资源或请求。即:浏览器A从B服务器拿的资源,资源中想访问服务器C的资源。
同源策略是指:浏览器A从服务器B获取的静态资源,包括Html、Css、Js,为了用户安全,浏览器加了限制,其中的Js通过Ajax只能访问B服务器的静态资源或请求。即:浏览器A从哪拿的资源,那资源中就只能访问哪。
同源是指:同一个请求协议(如:Http或Https)、同一个Ip、同一个端口,3个全部相同,即为同源。
跨域分为以下3种
名称 | 英文名 | 说明 |
---|---|---|
简单请求 | Simple Request | 发起的Http请求符合: 1.无自定义请求头, 2.请求动词为GET、HEAD或POST之一, 3.动词为POST时,Content-Type是application/x-www-form-urlencoded, multipart/form-data或text/plain之一 |
预检请求 | Preflighted Request | 发起的Http请求符合其中之一: 1.包含了自定义请求头, 2.请求动词不是GET、HEAD或POST, 3.动词是POST时, Content-Type不是application/x-www-form-urlencoded, multipart/form-data或text/plain。 即:简单请求的相反 |
凭证请求 | Requests with Credential | 发起的Http请求中带有凭证 |
SpringBoot2.x主要提供了两种方式来支持Cors,如下:
方式 | 作用范围 | 说明 |
---|---|---|
@CrossOrigin注解 | 一个Controller中全部接口或是其中一个特定的接口 | 配置、定制特定的请求接口 |
WebMvcConfigurer对象 | 全部接口 | 适用于全局配置 |
@CrossOrigin
注解实现#
如果想要对某一接口配置 CORS
,可以在方法上添加 @CrossOrigin
注解 :
- @CrossOrigin(origins = {"http://localhost:9000", "null"})
- @RequestMapping(value = "/test", method = RequestMethod.GET)
- public String greetings() {
- return "{\"project\":\"just a test\"}";
- }
#
如果想对一系列接口添加 CORS 配置,可以在类上添加注解,对该类声明所有接口都有效:
- @CrossOrigin(origins = {"http://localhost:9000", "null"})
- @RestController
- @SpringBootApplication
- public class SpringBootCorsTestApplication {
-
- }
- @Configuration
- public class GlobalCorsConfig implements WebMvcConfigurer {
- //添加到容器中管理
- @Bean
- public CorsFilter corsFilter() {
- CorsConfiguration config = new CorsConfiguration();
- config.addAllowedOrigin("*");
- config.setAllowCredentials(true);
- config.addAllowedMethod("*");
- config.addAllowedHeader("*");
-
- UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
- configSource.registerCorsConfiguration("/**", config);
-
- return new CorsFilter(configSource);
- }
- }
- @Configuration
- public class MyConfiguration extends WebMvcConfigurerAdapter {
-
- @Override
- public void addCorsMappings(CorsRegistry registry) {
- registry.addMapping("/**")
- .allowCredentials(true)
- .allowedHeaders("*")
- .allowedOrigins("*")
- .allowedMethods("*");
-
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。