成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Spring Boot 項目處理跨域的四種技巧

開發
上周幫一家公司優化代碼時,順手把跨域的問題解決了, 這篇文章,我們聊聊 SpringBoot 項目處理跨域的四種技巧 。

上周幫一家公司優化代碼時,順手把跨域的問題解決了, 這篇文章,我們聊聊 SpringBoot 項目處理跨域的四種技巧 。

一、什么是跨域

我們先看下一個典型的網站的地址:

同源是指:協議、域名、端口號完全相同。

下表給出了與 URL http://www.training.com/dir/page.html 的源進行對比的示例 :

當用戶通過瀏覽器訪問應用(http://admin.training.com)時,調用接口的域名非同源域名(http://api.training.com),這是顯而易見的跨域場景。

二、理解 CORS

CORS 是一個 W3C 標準,全稱是"跨域資源共享"(Cross-origin  resource  sharing), 它需要瀏覽器和服務器同時支持他,允許瀏覽器向跨源服務器發送XMLHttpRequest請求,從而克服 AJAX 只能同源使用的限制。

跨域資源共享標準新增了一組 HTTP 首部字段,允許服務器聲明哪些源站通過瀏覽器有權限訪問哪些資源。

規范要求,對那些可能對服務器數據產生副作用的 HTTP 請求方法(特別是 GET 以外的 HTTP 請求,或者搭配某些 MIME 類型的 POST 請求),瀏覽器必須首先使用 OPTIONS 方法發起一個預檢請求(preflight request),從而獲知服務端是否允許該跨域請求。

服務器確認允許之后,才發起實際的 HTTP 請求。在預檢請求的返回中,服務器端也可以通知客戶端,是否需要攜帶身份憑證(包括 Cookies 和 HTTP 認證相關數據)。

1. 簡單請求

簡單請求模式,瀏覽器直接發送跨域請求,并在請求頭中攜帶 Origin 的頭,表明這是一個跨域的請求。 服務器端接到請求后,會根據自己的跨域規則,通過 Access-Control-Allow-Origin 和 Access-Control-Allow-Methods 響應頭,來返回驗證結果。

2. 預檢請求

瀏覽器在發現頁面發出的請求非簡單請求,并不會立即執行對應的請求代碼,而是會觸發預先請求模式。預先請求模式會先發送preflight request(預先驗證請求),preflight request是一個 OPTION 請求,用于詢問要被跨域訪問的服務器,是否允許當前域名下的頁面發送跨域的請求。在得到服務器的跨域授權后才能發送真正的 HTTP 請求。

三、Nginx 配置

我們不用配置 SpringBoot 項目,在反向代理層 Nginx 直接配置 CORS ,典型配置如下圖:

四、配置類實現 addCorsMapping 接口

SpringBoot 中新增一個配置類 CorsConfig.java,繼承 WebMvcConfigurerAdapter 或者實現WebMvcConfigurer 接口,項目啟動后,會自動讀取配置。

五、CorsFilter 過濾器模式

下圖是 SpringMvc 模式里,過濾器,攔截器,控制器的執行順序。

CorsFilter 過濾器模式的優點是:優先級高,可以規避代碼中業務攔截器異常導致 adCorsMappings 方法失效的問題。

我們需要定義一個 corsFilter 方法,@Bean 注解表示此方法返回一個Spring Bean,該 Bean 將由Spring 容器管理。

corsFilter() 方法定義了一個 FilterRegistrationBean,這個 bean 是用來注冊 CorsFilter 的,后者用于處理 CORS 請求。

六、網關模式

在微服務架構體系中,網關是非常核心的組件。 API 網關可以做鑒權,限流,灰度等,同時可以配置 CORS 。內部服務端不用特別關注跨域這個問題。

因此假如是 SpringCloud 體系,我們只需要配置 SpringCloud gateway 的跨域即可。

責任編輯:趙寧寧 來源: 勇哥Java實戰
相關推薦

2025-01-06 08:33:10

2024-05-22 19:10:18

跨域Web開發

2024-08-29 09:01:39

2017-02-28 14:28:37

數據跨庫分頁架構

2022-08-18 09:38:02

Spring跨域

2010-07-28 22:35:25

ADSL掉線

2024-05-20 09:28:44

Spring客戶端瀏覽器

2025-06-12 03:55:00

項目處理異常代碼

2025-04-18 03:00:00

2020-08-10 00:30:55

備份密碼iPhone移動安全

2022-10-09 18:16:01

Flowable設置ReceiveTas

2020-06-17 08:31:10

權限控制Spring Secu

2021-07-27 10:49:10

SpringSecurity權限

2009-06-22 11:01:12

2022-03-14 09:05:37

Spring項目處理器

2017-09-01 11:59:59

Android

2024-09-09 05:30:00

數據庫Spring

2019-09-19 15:12:27

Spring策略框架

2011-11-24 16:34:39

Java

2019-10-24 07:42:28

Java引用GC
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品一 | 在线观看精品 | 国产一区二区免费在线 | 国产精品视频综合 | 毛片免费看 | 国产一区二区在线视频 | 日本不卡一二三 | 99精品一区二区三区 | 一区在线播放 | 黄色精品 | 欧美精品在线观看 | 亚洲精品99 | 日韩一区二区三区在线播放 | 黄a在线观看 | 国产精品中文字幕在线播放 | 夜夜骚视频 | 天天操天天摸天天干 | 国产成人精品一区二区三区视频 | 国产高清精品一区 | 青青操av| 91中文在线观看 | 久久久久久国产精品 | 国内精品久久久久久久 | 久久在线免费 | av中文字幕在线 | 国产精品久久国产精品99 gif | 五月天天丁香婷婷在线中 | 亚洲精品99999 | 自拍偷拍亚洲视频 | 免费观看羞羞视频网站 | 狠狠色综合欧美激情 | 97精品久久 | 欧美一级片在线观看 | 国产精品久久国产精品 | 亚洲一区免费 | 美女久久久 | 色综合成人网 | 日韩黄色av | 国产一区二区在线免费观看 | a在线免费观看视频 | 亚洲美女一区 |