代码之家  ›  专栏  ›  技术社区  ›  lvoelk

Spring MVC CORS头在选项上,但不允许请求

  •  0
  • lvoelk  · 技术社区  · 7 年前

    我的代码遇到了CORS错误。如果我在chrome实例中运行它,并使用--disable-web security,代码就可以工作。 我的Spring应用程序配置中有以下代码:

    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**").allowedOrigins("*").allowedMethods("*").allowedHeaders("*");
            }
        };
    }
    

    当我的前端提交其OPTIONS请求时,状态为200,并且响应具有以下标头:

     Request URL: http://127.0.0.1:9000/oe/Auth/login
    Request Method: OPTIONS
    Status Code: 200 OK
    Remote Address: 127.0.0.1:9000
    Referrer Policy: no-referrer-when-downgrade
    Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, X-Requested-With
    Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE, PUT, PATCH
    Access-Control-Allow-Origin: *
    Access-Control-Max-Age: 3600
    Allow: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH
    Cache-Control: no-cache, no-store, max-age=0, must-revalidate
    Content-Length: 0
    Date: Fri, 14 Sep 2018 01:27:15 GMT
    Expires: 0
    Pragma: no-cache
    Server: Apache-Coyote/1.1
    X-Content-Type-Options: nosniff
    X-Frame-Options: DENY
    X-XSS-Protection: 1; mode=block
    

    当它提交POST以登录时,我得到以下控制台错误:

    Failed to load http://127.0.0.1:9000/oe/Auth/login: 
    No 'Access-Control-Allow-Origin' header is present on the requested resource. 
    Origin 'http://localhost:3000' is therefore not allowed access.
    

    这是网络标签

    Request URL: http://127.0.0.1:9000/oe/Auth/login
    Request Method: POST
    Status Code: 200 OK
    Remote Address: 127.0.0.1:9000
    Referrer Policy: no-referrer-when-downgrade
    Cache-Control: no-cache, no-store, max-age=0, must-revalidate
    Date: Mon, 17 Sep 2018 20:19:48 GMT
    Expires: 0
    Pragma: no-cache
    Server: Apache-Coyote/1.1
    Set-Cookie: SESSION=ZjlhYTE5NmMtNDk3NC00Yzc4LTk1MDYtN2FjNzBhMjFhMGI0; Path=/oe/; HttpOnly
    Transfer-Encoding: chunked
    X-Content-Type-Options: nosniff
    X-Frame-Options: DENY
    X-XSS-Protection: 1; mode=block
    

    这是不是因为spring security在我的公司注册出现问题之前抓取了这个请求?

    1 回复  |  直到 5 年前
        1
  •  0
  •   lvoelk    7 年前

    一位朋友在下面的帖子里给我推荐了一个答案。您必须对cors的spring security进行额外的工作: https://stackoverflow.com/a/43559288/3459721