0
点赞
收藏
分享

微信扫一扫

CorMappings 跨域问题 SpringBoot解决跨域CorsRegistry

归零者245号 2022-01-20 阅读 60
java

1

2

3

4

5

6

7

8

9

10

11

12

13

实现webMvcCofigurer接口重写addCorsMappings(CorsRegistry registry){}方法

@Configuration

public class WebConfig implements WebMvcConfigurer {

    @Override

    public void addCorsMappings(CorsRegistry registry) {

        registry.addMapping("/admin/**") //  允许访问的地址     

                .allowedOrigins("*")  //请求来源     

                .allowedMethods("GET","POST","DELETE")//请求方式

                .allowedHeaders("*")    //请求头

                .exposedHeaders("Access-Control-Allow-Origin")

                .allowCredentials(true);

    }

或者

     

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                .allowedHeaders("*")
                .exposedHeaders("Access-Control-Allow-Origin")
                .allowCredentials(true);
    }

也可以
    
@Override
  public void addCorsMappings(CorsRegistry registry) {

    registry.addMapping("/**")  //允许跨域访问数据;
        .allowedOrigins("http://localhost:4200")
        .allowedMethods("POST");
  }

服务器在响应字段中来表明是否允许这个跨域请求,浏览器收到后检查如果不符合要求,就拒绝后面的请求

Access-Control-Allow-Origin:允许哪些域来访问(*表示允许所有域的请求)
Access-Control-Allow-Methods:允许哪些请求方式
Access-Control-Allow-Headers:允许哪些请求头字段
Access-Control-Allow-Credentials:是否允许携带Cookie
 

CORS全称叫跨域资源共享(Cross-origin resource sharing),原理是在正式的跨域请求之前,先发送了一个OPTIONS请求去询问服务器是否允许接下来的跨域请求

OPTIONS请求里新增了几个字段:

Origin:发起请求原来的域

Access-Control-Request-Method:将要发起的跨域请求方式(GET/PUT/POST/DELETE/······) Access-Control-Request-Headers:将要发起的跨域请求中包含的请求头字段

举报

相关推荐

0 条评论