为什么没有Access-Control-Allow-Methods。 CORS

问题描述 投票:0回答:1

我有CORS全局配置:

@EnableWebFlux
@Configuration
public class WebFluxConfig implements WebFluxConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
            .allowedOrigins("*")
            .allowedMethods("GET", "POST")
            .allowedHeaders("*");
    }
}

当我发送选项查询时:

curl -i -X OPTIONS -H "Origin:test.com" -H "Access-Control-Request-Method: GET" 

我明白了:

http://localhost:9999/my
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET,POST
Access-Control-Max-Age: 1800
content-length: 0

存在访问控制允许来源和访问控制允许方法。一切都OK。

但是如果我发送:

curl -i -H "Origin:test.com"  http://localhost:9999/my

我不使用Access-Control-Allow-Methods:

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Access-Control-Allow-Origin: *
Content-Type: text/plain;charset=UTF-8
Content-Length: 2

查询curl -i -H "Origin:test.com" -H "Access-Control-Request-Method: GET" http://localhost:9999/my返回相同。

为什么?请帮助我

java spring spring-boot cors spring-webflux
1个回答
0
投票

[allowedMethods中的添加OPTIONS方法。

OPTIONS请求是我们在跨域资源共享(CORS)中所谓的飞行前请求。

当您在特定情况下跨不同来源发出请求时,它们是必需的。

此预检请求是某些浏览器发出的,作为一种安全措施,以确保服务器信任正在执行的请求。意味着服务器可以理解,在请求上发送的方法,源和标头可以安全地执行。

您的服务器在尝试进行跨源请求时都不应忽略,而应处理这些请求。

More Details

© www.soinside.com 2019 - 2024. All rights reserved.