Spring Cloud Gateway系例—參數配置(CORS 配置、SSL、元數據)

一、CORS 配置

你可以配置網關來控制全局或每個路由的 CORS 行為。兩者都提供同樣的可能性。

1. Global CORS 配置

“global” CORS配置是對 Spring Framework CorsConfiguration 的URL模式的映射。下面的例子配置了 CORS。

Example 77. application.yml

spring:cloud:gateway:globalcors:cors-configurations:'[/**]':allowedOrigins: "https://docs.spring.io"allowedMethods:- GET

在前面的例子中,對于所有GET請求的路徑,允許來自 docs.spring.io 的請求的CORS請求。

要為未被某些網關路由謂詞處理的請求提供相同的 CORS 配置,請將 spring.cloud.gateway.globalcors.add-to-simple-url-handler-mapping 屬性設為 true。當你試圖支持 CORS 預檢請求,而你的路由謂詞因為 HTTP 方法是 options 而不能評估為 true 時,這很有用。

2. 路由的 CORS 配置

“route” configuration 允許將CORS直接應用于帶有key CORS 的路由作為元數據。像全局配置一樣,這些屬性屬于 Spring Framework CorsConfiguration。

如果路由中沒有 Path 謂詞,則將應用 '/**'。

Example 78. application.yml

spring:cloud:gateway:routes:- id: cors_routeuri: https://example.orgpredicates:- Path=/service/**metadata:corsallowedOrigins: '*'allowedMethods:- GET- POSTallowedHeaders: '*'maxAge: 30

二、路由元數據配置

你可以通過使用元數據為每個路由配置額外的參數,如下所示。

Example 73. application.yml

spring:cloud:gateway:routes:- id: route_with_metadatauri: https://example.orgmetadata:optionName: "OptionValue"compositeObject:name: "value"iAmNumber: 1

你可以從一個 exchange 所獲取所有的元數據屬性,如下所示

Route route = exchange.getAttribute(GATEWAY_ROUTE_ATTR);
// get all metadata properties
route.getMetadata();
// get a single metadata property
route.getMetadata(someKey);

三、配置(Configuration)

Spring Cloud Gateway 的配置是由 RouteDefinitionLocator 實例的集合驅動的。下面的列表顯示了 RouteDefinitionLocator 接口的定義。

Example 71. RouteDefinitionLocator.java

public interface RouteDefinitionLocator {Flux<RouteDefinition> getRouteDefinitions();
}

默認情況下,PropertiesRouteDefinitionLocator 通過使用Spring Boot的 @ConfigurationProperties 機制加載屬性。

前面的配置例子都使用了一種快捷方式,即使用位置參數而不是命名參數。下面的兩個例子是等價的。

Example 72. application.yml

spring:cloud:gateway:routes:- id: setstatus_routeuri: https://example.orgfilters:- name: SetStatusargs:status: 401- id: setstatusshortcut_routeuri: https://example.orgfilters:- SetStatus=401

對于網關的某些用途來說,屬性已經足夠了,但一些生產用例會從外部來源(如數據庫)加載配置中受益。未來的里程碑版本將有基于 Spring Data Repository 的 RouteDefinitionLocator 實現,如 Redis、MongoDB和Cassandra。

四、TLS 和 SSL

網關可以通過遵循通常的 Spring server configuration 來監聽 HTTPS 請求。下面的例子顯示了如何做到這一點。

Example 67. application.yml

server:ssl:enabled: truekey-alias: scgkey-store-password: scg1234key-store: classpath:scg-keystore.p12key-store-type: PKCS12

你可以將網關路由到HTTP和HTTPS后端。如果你要路由到HTTPS后端,你可以通過以下配置將網關配置為信任所有下游的證書。

Example 68. application.yml

spring:cloud:gateway:httpclient:ssl:useInsecureTrustManager: true

使用不安全的 trust manager 不適合于生產。對于生產部署,你可以用一組已知的證書來配置網關,它可以通過以下配置來信任。

Example 69. application.yml

spring:cloud:gateway:httpclient:ssl:trustedX509Certificates:- cert1.pem- cert2.pem

如果 Spring Cloud Gateway 沒有配置受信任的證書,就會使用默認的 trust store(你可以通過設置 javax.net.ssl.trustStore 系統屬性來覆蓋它)。

1. TLS 握手

網關維護著一個client pool,它用來路由到后端。當通過HTTPS進行通信時,客戶端發起了一個TLS握手。一些 timeout 配置與這個握手相關。你可以對這些 timeouts 進行配置,如下(默認值)。

Example 70. application.yml

spring:cloud:gateway:httpclient:ssl:handshake-timeout-millis: 10000close-notify-flush-timeout-millis: 3000close-notify-read-timeout-millis: 0

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/41042.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/41042.shtml
英文地址,請注明出處:http://en.pswp.cn/news/41042.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【【STM32----I2C通信協議】】

STM32----I2C通信協議 我們會發現I2C有兩根通信線&#xff1a; SCL和SDA 同步 半雙工 帶數據應答 支持總線掛載多設備&#xff08;一主多從&#xff0c;多主多從&#xff09; 硬件電路 所有I2C設備的SCL連在一起&#xff0c;SDA連在一起 設備的SCL和SDA均要配置成開漏輸出模式 …

5.Vue_Element

文章目錄 1 Ajax1.1 Ajax介紹1.1.1 Ajax概述1.1.2 Ajax作用1.1.3 同步異步 1.2 Axios1.2.1 Axios的基本使用1.2.2 Axios請求方法的別名 2 前端工程化2.1 前端工程化特點2.2 Vue項目開發流程 3 Vue組件庫Element3.1 Element介紹 1 Ajax 1.1 Ajax介紹 1.1.1 Ajax概述 Ajax: 全…

【Unity游戲開發】基于前綴樹的紅點系統構思與客戶端方案

一、前言 前段時間負責了項目中紅點系統的實現,和大家分享一下初期是設計思路 紅點系統客戶端業務的一般實現過程與方式: 數據管理:首先要在客戶端建立一個數據管理系統,用于存儲和管理各個業務模塊的紅點狀態。可以是一個中央數據管理器或模塊化的數據管理系統,具體根據游…

VUE中babel.config.js配置按需引入

VUE中babel.config.js配置 vue/cli-plugin-babel/preset是一款 babel 插件&#xff0c;它會在編譯過程中將 import 引入自動轉換為按需引入的方式。 module.exports {presets: [vue/cli-plugin-babel/preset],plugins: [[import, {libraryName: element-ui,libraryDirectory…

系統架構設計師---多媒體技術及其應用

概念 媒體:承載信息的載體。 多媒體:數字、文字、聲音、圖形、圖像和動畫等各種媒體的有機組合,并與先進的計 算機、通信和廣播電視技術相結合,形成一個可組織、存儲、操縱和控制多媒體信息的集成環境和 交互系統。 多媒體技術:以數字化為基礎,能夠對多…

召集令:CloudQuery 社區有獎征文活動來啦!

CloudQuery 社區第一期征文活動來襲&#xff01;&#xff01;&#xff01;只要你對 CloudQuery 產品感興趣&#xff0c;或者是希望了解 CQ &#xff0c;都可以來參加&#xff0c;在本期活動中&#xff0c;我們也為大家準備了多種主題供你選擇&#xff0c;CQ 使用案例、版本對比…

udp與can通信的選擇與比較

UDP&#xff08;用戶數據報協議&#xff09;和CAN&#xff08;控制器局域網&#xff09;是兩種不同的通信協議&#xff0c;它們在實時傳遞性上有一些區別。 UDP是一種無連接的傳輸協議&#xff0c;它提供了簡單的、不可靠的數據傳輸。UDP不提供可靠性保證、流控制或重傳機制。…

EMO實戰:使用EMO實現圖像分類任務(一)

文章目錄 摘要安裝包安裝timm安裝 grad-cam安裝einops 數據增強Cutout和MixupEMA項目結構計算mean和std生成數據集 摘要 論文翻譯&#xff1a;https://blog.csdn.net/m0_47867638/article/details/132034098?spm1001.2014.3001.5501 官方源碼&#xff1a;https://github.com/…

shell的兩種屬性: 交互(interactive)與登錄(login)

1. 背景 在看shell變量的時候引起了興趣: 局部變量&#xff0c;全局變量&#xff0c;環境變量&#xff0c;shell的配置文件&#xff0c;參考博客: http://c.biancheng.net/view/773.html 2. 交互式與非交互式 參考博客: shell的兩個屬性:是否交互式(interactive), 是否登錄…

生產環境下的終極指南:使用 Docker 部署 Nacos 集群和 MySQL

&#x1f337;&#x1f341; 博主貓頭虎 帶您 Go to New World.?&#x1f341; &#x1f984; 博客首頁——貓頭虎的博客&#x1f390; &#x1f433;《面試題大全專欄》 文章圖文并茂&#x1f995;生動形象&#x1f996;簡單易學&#xff01;歡迎大家來踩踩~&#x1f33a; &a…

01-集群安裝JDK(普通用戶)

機器部署 集群規劃 我們準備三臺服務器kk01、kk02、kk03&#xff0c;內存4G、硬盤50G、處理器4核心2內核&#xff08;總8&#xff09; kk01使用 192.168.188.128 kk02使用 192.168.188.129 kk03使用 192.168.188.130 模板機準備 我們先創建一臺作為模板機&#xff0c;后…

C++ 11 新特性 學習筆記

1、字符串原始字面量 R“()”用于取消轉義&#xff0c;可用于路徑表示 運行成功 這兩個RawValue起到描述作用&#xff08;可以不寫&#xff09;&#xff0c;并不參與輸出 注意&#xff0c;這里輸出中文亂碼 2、nullptr NULL在C中表示0&#xff0c;在非C中表示萬能指針 nullpt…

Vue3 使用json編輯器

安裝 npm install json-editor-vue3 main中引入 main.js 中加入下面代碼 import "jsoneditor";不然會有報錯&#xff0c;如jsoneditor does not provide an export named ‘default’。 圖片信息來源-github 代碼示例 <template><json-editor-vue class…

SQL | 分組數據

10-分組數據 兩個新的select子句&#xff1a;group by子句和having子句。 10.1-數據分組 上面我們學到了&#xff0c;使用SQL中的聚集函數可以匯總數據&#xff0c;這樣&#xff0c;我們就能夠對行進行計數&#xff0c;計算和&#xff0c;計算平均數。 目前為止&#xff0c…

ESP-C3入門21. I2C接口點亮1306驅動的OLED屏

ESP-C3入門21. 點亮1306驅動的OLED屏 一、Espressif/ssd1306 驅動簡介1. 驅動介紹2. OLED充電泵概念 二、I2C 通訊步驟1. 初始化 I2C 總線 (i2c_master_init()函數)&#xff1a;2. 創建 I2C 命令句柄 (i2c_cmd_handle_t cmd i2c_cmd_link_create())&#xff1a;3. 發送啟動信號…

【C#】獲取電腦CPU、內存、屏幕、磁盤等信息

通過WMI類來獲取電腦各種信息&#xff0c;參考文章&#xff1a;WMI_04_常見的WMI類的屬性_wmi scsilogicalunit_fantongl的博客-CSDN博客 自己整理了獲取電腦CPU、內存、屏幕、磁盤等信息的代碼 #region 系統信息/// <summary>/// 電腦信息/// </summary>public p…

flinksql報錯 Cannot determine simple type name “org“

flink版本 1.15 報錯內容 2023-08-17 15:46:02 java.lang.RuntimeException: Could not instantiate generated class WatermarkGenerator$0at org.apache.flink.table.runtime.generated.GeneratedClass.newInstance(GeneratedClass.java:74)at org.apache.flink.table.runt…

低功耗、5Mbps、RS-422 接口電路MS2583/MS2583M

MS2583/MS2583M 是一款低功耗、 5Mbps 、高 ESD 能力的 RS422 通訊接口電路。 在接收狀態下&#xff0c;其功耗僅為 0.3mA 左右。 A/B 端 ESD 耐壓可達 15kV &#xff0c;且無自激現象。當輸出短路發生大電 流導致電路溫度過高時&#xff0c;開啟內部過溫保護電路&…

go 使用 make 初始化 slice 切片使用注意

go 使用 make 初始化 slice 切片 時指定長度和不指定長度的情況 指定長度 package mainimport "fmt"func main() {s1 : make([]int, 5)data : []int{1, 2, 3}for _, v : range data {s1 append(s1, v)}fmt.Println(s1) }// 以上代碼會輸出 // [0 0 0 0 0 1 2 3] //…

vue中的路由緩存和解決方案

路由緩存的原因 解決方法 推薦方案二&#xff0c;使用鉤子函數beforeRouteUpdate&#xff0c;每次路由更新前執行