溫馨提示×

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

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

詳解Spring MVC CORS 跨域

發(fā)布時(shí)間:2020-10-19 05:32:07 來(lái)源:腳本之家 閱讀:231 作者:小新是也 欄目:編程語(yǔ)言

介紹

跨域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í)有所幫助,也希望大家多多支持億速云。

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

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

AI