詳解Spring MVC CORS 跨域
介紹
跨域CORS,全稱(chēng)是"跨域資源共享"(Cross-origin resource sharing)
當(dāng)頁(yè)面發(fā)出跨域請(qǐng)求時(shí):
1、簡(jiǎn)單請(qǐng)求(先簡(jiǎn)單理解為正常的get/post吧):
瀏覽器將請(qǐng)求的地址添加到header的Origin里面發(fā)送請(qǐng)求。接下來(lái)就看后臺(tái)如何處理了。
2、非簡(jiǎn)單請(qǐng)求(姑且簡(jiǎn)單理解成Content-Type:"application/json"吧):
瀏覽器會(huì)先發(fā)個(gè)預(yù)檢請(qǐng)求(preflight),也就是OPTIONS請(qǐng)求。服務(wù)器返回是否許可訪問(wèn)和支持的請(qǐng)求方式,瀏覽器再?zèng)Q定是否發(fā)出請(qǐng)求。
使用@CrossOrigin注解
用法很簡(jiǎn)單,只需在controller或者方法上面添加注解即可。在controller上用表示整個(gè)controller下的方法都支持跨域
@Controller public class HomeController { @CrossOrigin @RequestMapping("/") public String Index() { return "Index"; } }
參數(shù)說(shuō)明
- origins: 表示允許跨域的地址
前面的http(s)必須加,默認(rèn)*表示全部 - value: origins的別名
- allowedHeaders: 在OPTIONS請(qǐng)求中,返回的Access-Control-Allow-Headers
這個(gè)參數(shù)限定了客戶端只能發(fā)送的header參數(shù),不在此范圍內(nèi)瀏覽器阻止發(fā)出請(qǐng)求。默認(rèn)* - exposedHeaders: 對(duì)應(yīng)Access-Control-Expose-Headers
該字段可選。CORS請(qǐng)求時(shí),XMLHttpRequest對(duì)象的getResponseHeader()方法只能拿到6個(gè)基本字段:Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma。如果想拿到其他字段,就必須在Access-Control-Expose-Headers里面指定。上面的例子指定,getResponseHeader('FooBar')可以返回FooBar字段的值。 - methods: 允許的請(qǐng)求方法,像get,post這些
- allowCredentials: 對(duì)應(yīng)Access-Control-Allow-Credentials 該字段可選。它的值是一個(gè)布爾值,表示是否允許發(fā)送Cookie。默認(rèn)情況下,Cookie不包括在CORS請(qǐng)求之中。設(shè)為true,即表示服務(wù)器明確許可,Cookie可以包含在請(qǐng)求中,一起發(fā)給服務(wù)器。這個(gè)值也只能設(shè)為true,如果服務(wù)器不要瀏覽器發(fā)送Cookie,刪除該字段即可。
- maxAge: 對(duì)應(yīng)Access-Control-Max-Age 用來(lái)指定預(yù)檢請(qǐng)求的有效期(秒),在有效期內(nèi)不在發(fā)送預(yù)檢請(qǐng)求直接請(qǐng)求。默認(rèn)1800秒,即30分鐘。
使用spring配置文件
這個(gè)適合用于全局的配置,對(duì)應(yīng)的字段跟CrossOrigin差不多。path表示允許跨域的路徑。
<mvc:cors> <mvc:mapping path="/**" allowed-methods="*"/> </mvc:cors>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java判斷各類(lèi)型字符個(gè)數(shù)實(shí)例代碼
大家好,本篇文章主要講的是java判斷各類(lèi)型字符個(gè)數(shù)實(shí)例代碼,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12java8 filter方法、Predicate接口的使用方式
這篇文章主要介紹了java8 filter方法、Predicate接口的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07SpringBoot前后端分離解決跨域問(wèn)題的3種解決方案總結(jié)
前后端分離大勢(shì)所趨,跨域問(wèn)題更是老生常談,下面這篇文章主要給大家介紹了SpringBoot前后端分離解決跨域問(wèn)題的3種解決方案,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05MyBatis中傳入?yún)?shù)parameterType類(lèi)型詳解
這篇文章主要給大家介紹了關(guān)于MyBatis中傳入?yún)?shù)parameterType類(lèi)型的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2018-04-04