日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

spring cloud gateway跨域全局CORS配置方式

瀏覽:131日期:2023-07-03 08:52:37

在Spring 5 Webflux中,配置CORS,可以通過自定義WebFilter實現(xiàn):

注:此種寫法需真實跨域訪問,監(jiān)控header中才會帶相應(yīng)屬性。

代碼實現(xiàn)方式

import org.springframework.http.HttpHeaders;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 org.springframework.http.HttpMethod;import reactor.core.publisher.Mono; import static org.springframework.web.cors.CorsConfiguration.ALL;public class XXXApplication{public static void main(String[] args) { SpringApplication.run(XXXApplication.class, args);}private static final String MAX_AGE = '18000L';@Beanpublic WebFilter corsFilter() { return (ServerWebExchange ctx, WebFilterChain chain) -> {ServerHttpRequest request = ctx.getRequest();if (!CorsUtils.isCorsRequest(request)) { return chain.filter(ctx);}HttpHeaders requestHeaders = request.getHeaders();ServerHttpResponse response = ctx.getResponse();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); return Mono.empty();}return chain.filter(ctx); };}}配置實現(xiàn)方式

網(wǎng)上還提到一種配置寫法,實測好用:

spring: cloud: gateway: globalcors:corsConfigurations: ’[/**]’: allowedOrigins: '*' allowedMethods: '*' allowedHeaders: '*'springcloud gateway 跨域的解決

springcloud gateway提供的自帶的跨域過濾器有問題,前端還是會報跨域。zuul不會有這個問題。調(diào)試發(fā)現(xiàn)主要是游覽器發(fā)送嗅探請求(OPTIONS)時,沒有返回跨域的響應(yīng)頭,從而游覽器報跨域問題。

驗證

由于springcloud gateway為webflux與zuul不一樣,同一個服務(wù),采用spring內(nèi)置的跨域過濾器,zuul可以通過而gateway報錯。具體配置如下:

1、gateway跨域配置

spring: cloud: gateway: globalcors:cors-configurations: ’[/**]’: # 允許攜帶認證信息 # 允許跨域的源(網(wǎng)站域名/ip),設(shè)置*為全部 # 允許跨域請求里的head字段,設(shè)置*為全部 # 允許跨域的method, 默認為GET和OPTIONS,設(shè)置*為全部 # 跨域允許的有效期 allow-credentials: true allowed-origins: ’*’ allowed-headers: Content-Type,Content-Length, Authorization, Accept,X-Requested-With allowed-methods: ’*’ exposed-headers: Content-Type,Content-Length, Authorization, Accept,X-Requested-With max-age: 3600

此配置無效,前端還是會報跨域問題,主要是前端發(fā)送OPTIONS請求時沒有返回跨域信息

2、zuul網(wǎng)關(guān)或者其它微服務(wù)servlet

向容器中注入跨域過濾器

import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;import org.springframework.boot.web.servlet.FilterRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.core.Ordered;import org.springframework.web.cors.CorsConfiguration;import org.springframework.web.cors.UrlBasedCorsConfigurationSource;import org.springframework.web.filter.CorsFilter;/** * @author ZhouChuGang * @version 1.0 * @project langangkj-commonm * @date 2020/5/4 12:24 * @Description 跨域過濾器配置 */@Slf4j@configuration@ConditionalOnMissingBean(CorsFilter.class)@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)public class CorsFilterConfiguration { public CorsFilterConfiguration() {log.info('==========注入跨域過濾器============='); } @Bean('corsFilter') public CorsFilter corsFilter() {UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();CorsConfiguration config = new CorsConfiguration();// #允許向該服務(wù)器提交請求的URI,*表示全部允許config.addAllowedOrigin(CorsConfiguration.ALL);// 允許cookies跨域config.setAllowCredentials(true);// #允許訪問的頭信息,*表示全部config.addAllowedHeader(CorsConfiguration.ALL);// 允許提交請求的方法,*表示全部允許config.addAllowedMethod(CorsConfiguration.ALL);source.registerCorsConfiguration('/**', config);return new CorsFilter(source); } @Autowired @Qualifier('corsFilter') private CorsFilter corsFilter; /** * 配置跨域過濾器 */ @Bean public FilterRegistrationBean<CorsFilter> corsFilterRegistration() {FilterRegistrationBean<CorsFilter> registration = new FilterRegistrationBean<>();registration.setFilter(corsFilter);registration.addUrlPatterns('/*');registration.setName('corsFilter');registration.setOrder(Ordered.HIGHEST_PRECEDENCE);return registration; }}

此方案可以完美解決跨域問題。但是springcloud gateway 不是servlet 規(guī)范。

解決方案1、gateway后面的微服務(wù)實現(xiàn)跨域

跨域由網(wǎng)關(guān)后面的服務(wù)實現(xiàn)。

2、實現(xiàn)一個過濾器,來做跨域允許

需要在響應(yīng)頭中加入以下信息

# 這個為請求頭中的 originadd_header ’Access-Control-Allow-Origin’ ’$http_origin’ ;add_header ’Access-Control-Allow-Credentials’ ’true’ ;add_header ’Access-Control-Allow-Methods’ ’PUT,POST,GET,DELETE,OPTIONS’ ;add_header ’Access-Control-Allow-Headers’ ’Content-Type,Content-Length,Authorization,Accept,X-Requested-With’ ;3、采用nginx做代理,配置跨域響應(yīng)頭。(強烈推薦)

請求先到nginx,nginx再去請求gateway, 由nginx添加跨域響應(yīng)頭

add_header ’Access-Control-Allow-Origin’ ’$http_origin’ ;add_header ’Access-Control-Allow-Credentials’ ’true’ ;add_header ’Access-Control-Allow-Methods’ ’PUT,POST,GET,DELETE,OPTIONS’ ;add_header ’Access-Control-Allow-Headers’ ’Content-Type,Content-Length,Authorization,Accept,X-Requested-With’ ;

這里本人為了方便,采用第3中方案,測試完美解決!

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产69精品久久| 久久激情五月婷婷| 午夜av不卡| 久久国产日韩| 黄色免费成人| 99久久亚洲精品| 91九色精品| 蜜桃av一区二区在线观看| 亚洲欧美网站在线观看| 欧美日韩一区二区三区不卡视频 | 亚洲涩涩在线| 999久久久亚洲| 日韩制服丝袜先锋影音| 天堂精品久久久久| 老牛国内精品亚洲成av人片 | 国产精品nxnn| 99精品网站| 日韩精品视频在线看| 国产精品qvod| 99久久亚洲精品| 日本中文字幕一区二区| 丰满少妇一区| 亚洲在线国产日韩欧美| 日本午夜精品久久久久| 精品一区91| 黄色国产精品| 另类欧美日韩国产在线| 国产91久久精品一区二区| 亚洲+小说+欧美+激情+另类| 精品精品久久| 天堂成人免费av电影一区| 国产精品观看| 一本色道久久精品| 国产一区一一区高清不卡| 在线 亚洲欧美在线综合一区| 欧美亚洲三级| 亚洲午夜在线| 欧美国产先锋| 亚洲成人av观看| 亚洲另类av| 新版的欧美在线视频| 免费美女久久99| 久久免费视频66| 亚洲一区观看| 韩日一区二区| 亚洲三级在线| 91精品啪在线观看国产18| 国产视频网站一区二区三区| 欧美综合另类| 精品视频91| 亚洲精品护士| 欧美成人日韩| 91免费精品| 日韩福利视频导航| 在线视频免费在线观看一区二区| 水蜜桃精品av一区二区| 欧美日韩99| 久久先锋影音| 国产专区一区| 日韩成人免费| 国产日韩欧美一区二区三区 | 欧美成人亚洲| 日韩av专区| 国产精品手机在线播放| 免费人成在线不卡| 婷婷综合在线| 桃色一区二区| 国产一区二区三区不卡视频网站 | 亚洲精品一二三**| 亚洲精品1区2区| 欧美aa国产视频| 欧美精选视频一区二区| 精品国产乱码| 国产一区 二区| 日韩免费精品| 蜜臀精品一区二区三区在线观看 | 日韩欧美中文| 成人台湾亚洲精品一区二区| 久久香蕉精品香蕉| 国产欧美日韩视频在线| 青青国产91久久久久久| 亚洲毛片在线免费| 伊人国产精品| 免费在线观看日韩欧美| 久久www成人_看片免费不卡| 国产视频亚洲| 日韩在线观看一区二区| 亚洲综合二区| 男女性色大片免费观看一区二区 | 麻豆久久一区| 国产精品地址| 国产欧美高清| 久久亚洲道色| 中文在线а√在线8| 日韩欧美一区二区三区在线视频 | 91欧美极品| 国产精品毛片久久久| 国产精品99精品一区二区三区∴ | 日韩不卡免费高清视频| 樱桃视频成人在线观看| 久久久久网站| 久久国产日韩| 精品91久久久久| 免费在线观看精品| 日韩av三区| 精品中文在线| 91tv亚洲精品香蕉国产一区| 欧美1区免费| 在线观看一区| 欧美国产亚洲精品| 久久中文字幕一区二区三区| 国产精品99在线观看| 国产高清一区| 日本中文字幕不卡| 麻豆精品在线| 在线日韩视频| 日韩精品视频中文字幕| 精品高清久久| 999久久久精品国产| 老司机精品久久| 国产精品亚洲片在线播放| 麻豆视频在线看| 国产精品外国| 日韩精品视频在线看| 精品久久免费| 久久一区二区三区电影| 日本va欧美va瓶| 国产aⅴ精品一区二区四区| 2023国产精品久久久精品双| 亚洲三级在线| 精品91福利视频| 91久久亚洲| 国产精品亚洲成在人线| 久久精品免费一区二区三区| 久久午夜精品一区二区| 欧美激情日韩| 夜夜嗨一区二区| 久久精品国产99| 蜜桃伊人久久| 欧美国产美女| 亚洲人成亚洲精品| 97精品国产| 蜜桃久久久久久| 91亚洲自偷观看高清| 亚洲深夜福利在线观看| 日韩a一区二区| 亚洲日韩视频| 亚洲成人不卡| 奇米狠狠一区二区三区| 99精品综合| 国产麻豆一区二区三区 | 国产综合精品| 老司机精品视频网| 西西人体一区二区| 水蜜桃精品av一区二区| 五月亚洲婷婷| 久久麻豆精品| 精品久久美女| 日韩av资源网| 羞羞答答国产精品www一本| 国产美女高潮在线| 国产精品乱战久久久| 亚洲最新av| 久久高清精品| 欧美激情麻豆| 亚洲精品激情| 在线亚洲激情| 精品美女在线视频| 中文字幕av一区二区三区人| 午夜精品久久久久久久久久蜜桃| 国产精品主播| 深夜日韩欧美| 国产亚洲欧洲| 亚洲精品看片| 国产亚洲精品久久久久婷婷瑜伽| 日韩欧美午夜| 国产一区二区三区四区二区| 日韩高清不卡一区| 视频一区视频二区在线观看| 四虎4545www国产精品| 精品视频免费| 国产精品亚洲欧美一级在线| 最新国产精品久久久| 香蕉久久精品| 欧洲精品一区二区三区| 精品美女在线视频| 麻豆国产精品视频| 国产精品激情电影| 国产精品久久久免费| 日本不卡一区二区| 亚洲婷婷丁香| 蜜臀a∨国产成人精品| 国产精品日本欧美一区二区三区| 久久亚洲在线| 99久久亚洲精品蜜臀| 久久精品卡一| 亚洲天堂成人| 午夜欧美精品| 日韩视频精品在线观看| 1024精品一区二区三区|