当前位置: 首页 > 知识库问答 >
问题:

在Spring5WebFlux中启用CORS?

严书
2023-03-14

如何在Spring5WebFlux项目中启用CORS?

我找不到合适的留档。

共有3个答案

郎宏浚
2023-03-14
@Configuration
public class WebFluxConfig {

    @Bean
    public WebFluxConfigurer corsConfigurer() {
        return new WebFluxConfigurerComposite() {

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

对应于:

@Bean
public WebMvcConfigurer corsConfigurer() {
    return new WebMvcConfigurerAdapter() {

        @Override
        public void addCorsMappings(CorsRegistry registry) {

对于SpringMVC。

羊舌高明
2023-03-14

下面是Webflux配置器的另一个解决方案。

附带说明:它的静态编程语言代码(从我的项目中复制),但您可以轻松地将其转换为Java代码。

@Configuration
@EnableWebFlux
class WebConfig: WebFluxConfigurer
{
    override fun addCorsMappings(registry: CorsRegistry)
    {
        registry.addMapping("/**")
            .allowedOrigins("*") // any host or put domain(s) here
            .allowedMethods("GET, POST") // put the http verbs you want allow
            .allowedHeaders("Authorization") // put the http headers you want allow
    }
}
澹台华翰
2023-03-14

我成功地使用了这个自定义过滤器:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.web.cors.reactive.CorsUtils;
import org.springframework.web.server.ServerWebExchange;
import org.springframework.web.server.WebFilter;
import org.springframework.web.server.WebFilterChain;

import reactor.core.publisher.Mono;


@Configuration
public class CorsConfiguration {

  private static final String ALLOWED_HEADERS = "x-requested-with, authorization, Content-Type, Authorization, credential, X-XSRF-TOKEN";
  private static final String ALLOWED_METHODS = "GET, PUT, POST, DELETE, OPTIONS";
  private static final String ALLOWED_ORIGIN = "*";
  private static final String MAX_AGE = "3600";

  @Bean
  public WebFilter corsFilter() {
    return (ServerWebExchange ctx, WebFilterChain chain) -> {
      ServerHttpRequest request = ctx.getRequest();
      if (CorsUtils.isCorsRequest(request)) {
        ServerHttpResponse response = ctx.getResponse();
        HttpHeaders headers = response.getHeaders();
        headers.add("Access-Control-Allow-Origin", ALLOWED_ORIGIN);
        headers.add("Access-Control-Allow-Methods", ALLOWED_METHODS);
        headers.add("Access-Control-Max-Age", MAX_AGE);
        headers.add("Access-Control-Allow-Headers",ALLOWED_HEADERS);
        if (request.getMethod() == HttpMethod.OPTIONS) {
          response.setStatusCode(HttpStatus.OK);
          return Mono.empty();
        }
      }
      return chain.filter(ctx);
    };
  }

}

org.springframework.boot: sping-boo-starter-web不应该被包括,因为依赖-过滤器不与它一起工作。

 类似资料:
  • 我正在尝试在我的WebClient上设置超时,以下是当前代码: 我需要添加超时和池策略,我在想这样的事情: 但是我不知道如何在我的webclient中设置httpClient

  • 问题内容: 我已经使用SLIM PHP框架创建了一个基本的RESTful服务,现在我正尝试将其连接起来,以便可以从Angular.js项目访问该服务。我已经了解到Angular开箱即用地支持CORS,而我要做的就是在我的.htaccess文件中添加以下行: 我已经做到了,我的REST应用程序仍然可以正常工作(.htaccess错误导致500个内部服务器没有错误),但是当我尝试从test- cors

  • 问题内容: 有人可以建议如何在PHP中启用json_encode函数吗? 我已经全新安装了Centos 5.6,并且刚刚安装了Virtualmin。 有人知道下一步该怎么做吗? 问题答案: 如http://www.php.net/manual/en/json.requirements.php 要求 无需安装即可使用这些功能。它们是PHP核心的一部分。 只是PHP> = 5.2.0 编辑 :在评论中

  • 问题内容: 我们有一个有效的Apache mod_ssl配置。我想为Undertow启用HTTPS支持,以便它侦听http和https,从而消除了对Apache的需求。 我研究了Undertow的javadocs。Undertow.Builder类具有两个具有以下签名的addHttpsListener方法: 所以看来我可以在使用Builder API引导Undertow时使用它们,例如 我不确定如

  • 问题内容: 我一直在尝试找出如何在CI中启用$ _GET。 看起来框架故意破坏了$ _GET数组,并且启用它需要认真修改核心类。谁能说这是为什么,以及如何克服它? 提醒您,我希望保持URI的解析和路由,只需要$ _GET即可。 问题答案: 将以下库添加到您的应用程序库。它覆盖清除$ _GET数组的默认输入库的行为。它允许URI段和查询字符串混合使用。 应用程序/库/MY_Input.php 修改某

  • 我有一个带有本地IP的专用网络。我想为我的Jenkins服务器启用HTTPS,它是静态IP W.X.Y.Z:8080。 我尝试在 /etc/defaults/jenkins文件中配置以下参数 但是我得到了以下错误。请帮忙 我发现类似的问题解决在这里但它不工作对我来说 编辑1:以下更改已尝试在 /etc/defaults/jenkins文件和重新启动jenkins,但它不适用于我。 https://