溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Spring Boot通過CORS處理跨域問題的方法

發(fā)布時(shí)間:2020-08-04 14:40:23 來源:億速云 閱讀:141 作者:小豬 欄目:編程語言

這篇文章主要講解了Spring Boot通過CORS處理跨域問題的方法,內(nèi)容清晰明了,對此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會有幫助。

跨域的產(chǎn)生就是因?yàn)闉g覽器的同源策略。它是瀏覽器的核心安全功能,所謂的同源,就是指域名,協(xié)議,還有端口要相同。傳統(tǒng)的方案就是JSONP(前端處理方案),但是JSONP有很大的局限性,就是只支持GET請求,所以不能滿足我們的需求,而CORS(Cross-origin-resource sharing)跨域資源共享,就可以解決這個(gè)問題。他是一個(gè)瀏覽器規(guī)范,一個(gè)w3c標(biāo)準(zhǔn),提供web服務(wù)從不同網(wǎng)域傳來的沙盒腳本的方法,避開了瀏覽器的同源策略。

CORS是后端的一種處理的方案,在Spring中可以配置解決跨域,在Spring Boot中它的配置變得很簡單,只需要在你controller方法上加一個(gè)注解@CrossOrigin(origins="你的請求地址")就好了。

跨域資源共享(CORS) 是一種機(jī)制,它使用額外的 HTTP 頭來告訴瀏覽器 讓運(yùn)行在一個(gè) origin (domain) 上的Web應(yīng)用被準(zhǔn)許訪問來自不同源服務(wù)器上的指定的資源。當(dāng)一個(gè)資源從與該資源本身所在的服務(wù)器不同的域、協(xié)議或端口請求一個(gè)資源時(shí),資源會發(fā)起一個(gè)跨域 HTTP 請求。

比如,站點(diǎn) http://domain-a.com 的某 HTML 頁面通過 <img> 的 src 請求 https://cache.yisu.com/upload/information/20200623/121/87584.jpg。網(wǎng)絡(luò)上的許多頁面都會加載來自不同域的CSS樣式表,圖像和腳本等資源。

出于安全原因,瀏覽器限制從腳本內(nèi)發(fā)起的跨源HTTP請求。 例如,XMLHttpRequest和Fetch API遵循同源策略。 這意味著使用這些API的Web應(yīng)用程序只能從加載應(yīng)用程序的同一個(gè)域請求HTTP資源,除非響應(yīng)報(bào)文包含了正確CORS響應(yīng)頭。

如果方法百十來個(gè),那這種的就不適用,因此可以做一個(gè)全局配置,統(tǒng)一處理

@Configuration
//ctrl+o找一下這個(gè)方法
public class WebMVcConfig implements WebMvcConfigurer {
  @Override
  public void addCorsMappings(CorsRegistry registry) {
  registry.addMapping("**").allowedOrigins("http://localhost:8081")
               .allowedHeaders("*")
               .allowedMethods("*")
               .maxAge(30*1000);
  }
}

后端代碼處理的話就是這樣,但是還有其他方法,例如nginx,例如node.js,都可以處理,但是這兩個(gè)第三方工具的用處很多,如果僅僅局限在處理跨域,那就有點(diǎn)大材小用。

看完上述內(nèi)容,是不是對Spring Boot通過CORS處理跨域問題的方法有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI