Spring Boot設(shè)置支持跨域請求過程詳解
現(xiàn)代瀏覽器出于安全的考慮, HTTP 請求時(shí)必須遵守同源策略,否則就是跨域的 HTTP 請求,默認(rèn)情況下是被禁止的,IP(域名)不同、或者端口不同、協(xié)議不同(比如 HTTP、HTTPS)都會造成跨域問題。
一般前端的解決方案有:
- ① 使用 JSONP 來支持跨域的請求,JSONP 實(shí)現(xiàn)跨域請求的原理簡單的說,就是動態(tài)創(chuàng)建<script>標(biāo)簽,然后利用<script>的 SRC 不受同源策略約束來跨域獲取數(shù)據(jù)。缺點(diǎn)是需要后端配合輸出特定的返回信息。
- ② 利用反應(yīng)代理的機(jī)制來解決跨域的問題,前端請求的時(shí)候先將請求發(fā)送到同源地址的后端,通過后端請求轉(zhuǎn)發(fā)來避免跨域的訪問。
后來 HTML5 支持了 CORS 協(xié)議。CORS 是一個 W3C 標(biāo)準(zhǔn),全稱是”跨域資源共享”(Cross-origin resource sharing),允許瀏覽器向跨源服務(wù)器,發(fā)出 XMLHttpRequest 請求,從而克服了 AJAX 只能同源使用的限制。它通過服務(wù)器增加一個特殊的 Header[Access-Control-Allow-Origin]來告訴客戶端跨域的限制,如果瀏覽器支持 CORS、并且判斷 Origin 通過的話,就會允許 XMLHttpRequest 發(fā)起跨域請求。
前端使用了 CORS 協(xié)議,就需要后端設(shè)置支持非同源的請求,Spring Boot 設(shè)置支持非同源的請求有兩種方式。
第一,配置 CorsFilter。
@Configuration
public class GlobalCorsConfig {
@Bean
public CorsFilter corsFilter() {
CorsConfiguration config = new CorsConfiguration();
config.addAllowedOrigin("*");
config.setAllowCredentials(true);
config.addAllowedMethod("*");
config.addAllowedHeader("*");
config.addExposedHeader("*");
UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
configSource.registerCorsConfiguration("/**", config);
return new CorsFilter(configSource);
}
}
需要配置上述的一段代碼。第二種方式稍微簡單一些。
第二,在啟動類上添加:
public class Application extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowCredentials(true)
.allowedHeaders("*")
.allowedOrigins("*")
.allowedMethods("*");
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Idea調(diào)用WebService的關(guān)鍵步驟和注意事項(xiàng)
這篇文章主要介紹了如何在Idea中調(diào)用WebService,包括理解WebService的基本概念、獲取WSDL文件、閱讀和理解WSDL文件、選擇對接測試工具或方式、發(fā)送請求和接收響應(yīng)、處理響應(yīng)結(jié)果以及錯誤處理,需要的朋友可以參考下2025-01-01
IDEA 中使用 Big Data Tools 連接大數(shù)據(jù)組件
本文主要介紹了IDEA 中使用 Big Data Tools 連接大數(shù)據(jù)組件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
Spring MVC文件上傳大小和類型限制以及超大文件上傳bug問題
這篇文章主要介紹了Spring MVC文件上傳大小和類型限制以及超大文件上傳bug問題,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-10-10
淺談spring和spring MVC的區(qū)別與關(guān)系
下面小編就為大家?guī)硪黄獪\談spring和spring MVC的區(qū)別與關(guān)系。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04
IntelliJ?IDEA社區(qū)版2021.3配置SpringBoot項(xiàng)目詳細(xì)教程及失敗案例
IntelliJ?IDEA?2021.3.3是一款集成開發(fā)環(huán)境,用于Java和其他編程語言的開發(fā),下面這篇文章主要給大家介紹了關(guān)于IntelliJ?IDEA社區(qū)版2021.3配置SpringBoot項(xiàng)目詳細(xì)教程及失敗案例的相關(guān)資料,需要的朋友可以參考下2024-03-03
MyBatis-Plus速成指南之簡化你的數(shù)據(jù)庫操作流程(最新推薦)
MyBatis-Plus?是一個?MyBatis?的增強(qiáng)工具,在?MyBatis?的基礎(chǔ)上只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生,這篇文章主要介紹了MyBatis-Plus速成指南:簡化你的數(shù)據(jù)庫操作流程,需要的朋友可以參考下2025-02-02

