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