SpringBoot CORS跨域支援

2021-10-23 01:28:22 字數 2336 閱讀 8674

cors (cross-origin resource sharing)是由w3c制定的一種跨域資源共享技術標準,其目的就是為了解決前端的跨域請求。最常見的前端跨域請求解決方案是jsonp,但 是jsonp只支援 get 請求,這是乙個很大的缺陷,而cors則支援多種http請求方法。

1、get、post和head請求

get為例,瀏覽器傳送請求時,請求頭request攜帶引數:

如果服務端支援cors,則服務端會給出響應資訊:

其中access-control-allow-origin,用來記錄可以訪問該資源的域。當瀏覽器收到這樣的響應頭資訊之後,提取出access-control-allow-origin欄位中的值,發現該值包含當前頁面所在的域,就會允許這個跨域請求,不再限制。

整個流程就一步,只需要對後端**進行處理。這個流程主要針對getpost以及head請求,並且沒有自定義請求頭。

2、delet、put及自定義請求頭的請求

put請求為例,整個請求處理會經過兩個步驟:探測請求、真正的請求

①傳送乙個options請求 - 探測請求

這個請求會向服務端詢問是否具備put許可權,服務端給瀏覽器乙個響應

瀏覽器分析請求頭欄位,發現是支援的請求,則進入第二步。

②傳送put請求

服務端響應:

到此為止,put請求完成。

實際上使用的就是spring的@crossorigin註解。

1、建立乙個springboot工程 - 8080埠

①controller層配置跨域 - 方法註解跨域

value:支援的域

maxage:探測請求有效期,預設1800秒,即在完成一次請求後的30分鐘內不再需要傳送探測請求

allowedheaders:允許的請求頭,*表示所有請求頭都允許

②全域性配置跨域

@configuration

public

class

mywebmvcconfig

implements

webmvcconfigurer

2、建立springboot工程 - 8081埠

resources/static檔案下建立html檔案,用於傳送請求。

"getdiv"

>

<

/div>

"putdiv"

>

<

/div>

"button" value=

"傳送get請求" onclick=

"getdata()"

>

"button" value=

"傳送put請求" onclick=

"putdata()"

>

springboot cors跨域處理

專案中遇到跨域問題你們怎麼處理的呢,這裡提供cors跨域作為參考 專案使用springboot,具體邏輯就不說了,很簡單,搜尋一下就懂了,這裡直接上 吧 package com.cui.boot.config import org.springframework.context.annotation...

js跨域 ajax跨域 跨域方式(前端)

跨域方式 cors 跨域資源共享 當使用xmlhttprequest傳送請求時,瀏覽器會自動加上乙個請求頭 origin,後端在接受到請求後確定響應後會在response headers中加入乙個屬性 access control allow origin,值就是發起請求的源位址 瀏覽器得到響應會進...

mysql跨庫分頁查詢 跨庫跨表分頁

前言 之前經常思考的乙個問題,資料庫分表後,分頁怎麼做才是最好的方案呢?今天就來整理一波.由來首先是由來,資料量增大,一張表資料太多的話,會使用分表.同理,乙個資料庫例項到達瓶頸,所以可能需要分庫 開始分表分庫都需要乙個依據.一般都安裝主鍵自增id來分割,很多時候分頁都是有時間排序的,這樣分割也能保...