gpt4 book ai didi

spring - 如何在 Prod/Dev 环境中处理 CORS URL?

转载 作者:行者123 更新时间:2023-12-03 21:27:04 24 4
gpt4 key购买 nike

在我们的 Spring Boot 应用程序中,我们在 Quality 环境中进行了第一次部署,现在我们希望简化定义 URL 以接受来自 FrontEnd 应用程序的请求。

我们用 maven 构建我们的应用程序,然后我们用命令执行它

java -Dspring.profiles.active=prod -jar myapp-0.0.1-SNAPSHOT.jar

我们认为我们可以在 application.properties/application-prod.properties 上设置 URL文件,但这不起作用,因为在执行时它为空。另一种解决方法是以某种方式获取参数 -Dspring.profiles.active=prod我们在运行应用程序时通过,然后获取一个或另一个 URL 但这似乎有点脏......

那你们会怎么做呢?在谷歌上找不到任何东西给我留下了深刻的印象,显然人们有不同的解决方法,或者我以错误的方式搜索。

编辑
跨源信息:
我们一开始就是这样实现的。
@CrossOrigin(origins = BasicConfiguration.CLIENT_URL)

这就是我们现在想要使用 Spring Security 的过滤器来做到这一点的方式
public class CorsFilter implements Filter, ApplicationContextAware {
@Value("${urlServer}")
private String urlServer;

@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", urlServer);
response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE, PATCH");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
response.setHeader("Access-Control-Expose-Headers", "Location");
chain.doFilter(req, res);
}

@Override
public void init(FilterConfig filterConfig) {}

@Override
public void destroy() {}
}

当然 urlServer 是在 application.properties 中定义的,并带有相应的元数据。

编辑 2
我如何初始化过滤器:
@Bean
public FilterRegistrationBean corsFilter() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new CorsFilter());
registration.addUrlPatterns("/sessionLogin");
return registration;
}

最佳答案

问题是你CorsFilter不是 Spring Bean 。你可以把它定义成一个 bean,或者做这样的事情:

    @Bean
public FilterRegistrationBean corsFilter(@Value("${app.cors.url.server}") String urlServer) {
FilterRegistrationBean registration = new FilterRegistrationBean();
CorsFilter corsFilter = new CorsFilter();
corsFilter.setUrlServer(urlServer);
registration.setFilter(corsFilter);
registration.addUrlPatterns("/sessionLogin");
return registration;
}

当然,您需要在 CorsFilter 中定义 setter为 urlServer field

关于spring - 如何在 Prod/Dev 环境中处理 CORS URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44798779/

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