gpt4 book ai didi

java - Spring Boot 的 CORS 不在响应 header 中

转载 作者:行者123 更新时间:2023-12-01 16:46:53 25 4
gpt4 key购买 nike

我尝试按照此 Spring 站点的建议为部署到 Pivotal Cloud Foundry 的 Spring Boot 应用程序实现 GLOBAL CORS。

https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/cors.html

但是,当我向服务端点发送 OPTIONS 消息时,响应中不会返回任何 CORS header 。因此,应用程序在预检后无法进行 POST 调用。这是我的实现。

@Configuration
@EnableWebMvc
public class CORSConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {

registry.addMapping("*/**")
.allowedOrigins("*")
.allowedMethods("GET", "POST", "OPTIONS")
.allowedHeaders("Content-Type", "Authorization")
.allowCredentials(false).maxAge(3600);
}
}

我错过了什么吗?

最佳答案

好的。我找到了问题所在。 HTTP OPTIONS 请求本身并不构成预检请求。为了使 OPTIONS 被视为飞行前请求,它还需要 2 个请求 header 。一个是 Origin,我将其添加到请求中。然而,我错过的是访问控制请求方法。浏览器生成的飞行前请求将包含所有 3 个 http 请求 header 。添加所有 3 个请求 header 后,我看到我的 CORS header 在响应中返回。

这是示例代码和响应。

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
@EnableWebMvc
public class CORSConfig extends WebMvcConfigurerAdapter {

@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("POST")
.allowedHeaders("Content-Type", "Authorization")
.allowCredentials(false)
.maxAge(32400); // 9 hours max age
}
}

这是请求:

OPTIONS /my-end-point HTTP/1.1
Host: my-app.my-domain.com
Origin: http://localhost:8090
Access-Control-Request-Method: POST
Cache-Control: no-cache
Postman-Token: bc7171bc-7f84-3b44-a304-818627411a72
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

这是回复。

access-control-allow-methods →POST
access-control-allow-origin →*
access-control-max-age →32400

关于java - Spring Boot 的 CORS 不在响应 header 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48712638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com