クロスドメインアクセスの構成

ズールゲートウェイゲートウェイゲートウェイ

パブリッククラスCorsWebFilterはWebFilter {

プライベート静的最終文字列ALL = "*";

 

プライベート静的最終文字列MAX_AGE = "18000L";

 

@オーバーライド

 

public Mono <Void> filter(ServerWebExchange ctx、WebFilterChain chain){

 

ServerHttpRequestリクエスト= ctx.getRequest();

 

文字列path = request.getPath()。value();

 

ServerHttpResponse応答= ctx.getResponse();

 

if( "/ favicon.ico" .equals(path)){

 

response.setStatusCode(HttpStatus.OK);

 

Mono.empty();を返します。

 

}

 

 

if(!CorsUtils.isCorsRequest(request)){

 

return chain.filter(ctx);

 

}

 

HttpHeaders requestHeaders = request.getHeaders();

 

 

HttpMethod requestMethod = requestHeaders.getAccessControlRequestMethod();

 

HttpHeaders headers = response.getHeaders();

 

headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN、requestHeaders.getOrigin());

 

headers.addAll(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS、requestHeaders.getAccessControlRequestHeaders());

 

if(requestMethod!= null){

 

headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS、requestMethod.name());

 

}

 

headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS、 "true");

 

headers.add(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS、ALL);

 

headers.add(HttpHeaders.ACCESS_CONTROL_MAX_AGE、MAX_AGE);

 

if(request.getMethod()== HttpMethod.OPTIONS){

 

response.setStatusCode(HttpStatus.OK);

 

Mono.empty();を返します。

 

}

 

 

 

return chain.filter(ctx);

 

}

 

}

元の記事を6件公開しました 賞賛されました0 訪問52

おすすめ

転載: blog.csdn.net/weixin_45530390/article/details/105481919