SpringBoot中的跨域詳解
什么是跨域?
在瀏覽器上當(dāng)前訪問的網(wǎng)站,向另一個(gè)網(wǎng)站發(fā)送請(qǐng)求,用于獲取數(shù)據(jù)的過程就是跨域請(qǐng)求。
跨域,是瀏覽器的同源策略決定的,是一個(gè)重要的瀏覽器安全策略
用于限制一個(gè) origin 的文檔或者它加載的腳本與另一個(gè)源的資源進(jìn)行交互,它能夠幫助阻隔惡意文檔,減少可能被攻擊的媒介,可以使用 CORS 配置解除這個(gè)限制。
什么是同源策略?
同源策略/SOP(Same origin policy)是一種約定,由Netscape公司1995年引入瀏覽器,它是瀏覽器最核心也最基本的安全功能
如果缺少了同源策略,瀏覽器很容易受到XSS、CSFR等攻擊
同源策略能夠限制以下行為:
- Cookie、LocalStorage 和 IndexDB 無法讀取
- DOM 和 JS對(duì)象無法獲得
- AJAX 請(qǐng)求不能發(fā)送
- 注意:跨域限制是瀏覽器的機(jī)制,如果直接在服務(wù)端請(qǐng)求,是不會(huì)觸發(fā)跨域限制的。
同源/不同源?

跨域解決方案:
- 通過jsonp跨域
- document.domain + iframe跨域
- location.hash + iframe
- window.name + iframe跨域
- postMessage跨域
- 跨域資源共享(CORS)
- nginx代理跨域
- nodejs中間件代理跨域
- WebSocket協(xié)議跨域
什么是跨域資源共享(CORS)?
CORS是一個(gè)W3C標(biāo)準(zhǔn),全稱是"跨域資源共享"(Cross-origin resource sharing)。
它允許瀏覽器向跨源服務(wù)器,發(fā)出XMLHttpRequest請(qǐng)求,從而克服了AJAX只能同源使用的限制。
普通跨域請(qǐng)求,只服務(wù)端設(shè)置Access-Control-Allow-Origin即可,前端無須設(shè)置;若要帶cookie請(qǐng)求,前后端都需要設(shè)置。
目前,所有瀏覽器都支持該功能,CORS也已經(jīng)成為主流的跨域解決方案。
NGINX代理跨域的原理
NGINX實(shí)現(xiàn)代理跨域的原理,實(shí)際就是把WEB項(xiàng)目和后端項(xiàng)目放到一個(gè)域中
這樣就不存在跨域問題了,NGINX根據(jù)請(qǐng)求地址去請(qǐng)求不同服務(wù)器,也就是真正干活的服務(wù)器上的資源。
到此這篇關(guān)于SpringBoot中的跨域詳解的文章就介紹到這了,更多相關(guān)SpringBoot跨域內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot淺析安全管理之基于數(shù)據(jù)庫認(rèn)證
在真實(shí)的項(xiàng)目中,用戶的基本信息以及角色等都存儲(chǔ)在數(shù)據(jù)庫中,因此需要從數(shù)據(jù)庫中獲取數(shù)據(jù)進(jìn)行認(rèn)證和授權(quán)2022-08-08
Java?web實(shí)現(xiàn)簡單注冊(cè)功能
這篇文章主要為大家詳細(xì)介紹了Java?web實(shí)現(xiàn)簡單注冊(cè)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
為什么Spring和IDEA都不推薦使用 @Autowired 注解
本文主要介紹了為什么Spring和IDEA都不推薦使用 @Autowired 注解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
maven在settings.xml和pom.xml中指定jdk版本編譯的方法
在開發(fā)Java應(yīng)用時(shí),通常需要指定要使用的Java版本,下面這篇文章主要給大家介紹了關(guān)于maven在settings.xm和pom.xml中指定jdk版本編譯的方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-05-05
Mybatis動(dòng)態(tài)SQL foreach標(biāo)簽用法實(shí)例
這篇文章主要介紹了Mybatis動(dòng)態(tài)SQL foreach標(biāo)簽用法實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
SpringBoot+WebMagic+MyBaties實(shí)現(xiàn)爬蟲和數(shù)據(jù)入庫的示例
WebMagic是一個(gè)開源爬蟲框架,本項(xiàng)目通過在SpringBoot項(xiàng)目中使用WebMagic去抓取數(shù)據(jù),最后使用MyBatis將數(shù)據(jù)入庫。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
Java如何處理json字符串value多余雙引號(hào)
這篇文章主要介紹了Java如何處理json字符串value多余雙引號(hào),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
Spring中WebClient的創(chuàng)建和使用詳解
這篇文章主要介紹了Spring中WebClient的創(chuàng)建和使用詳解,在Spring5中,出現(xiàn)了Reactive響應(yīng)式編程思想,并且為網(wǎng)絡(luò)編程提供相關(guān)響應(yīng)式編程的支持,如提供了WebFlux,它是Spring提供的異步非阻塞的響應(yīng)式的網(wǎng)絡(luò)框架,需要的朋友可以參考下2023-11-11

