Spring Boot解決跨域

摘自:https://mp.weixin.qq.com/s/jlX_sbwhN3ASply6MLw1Vw

1 詳解響應(yīng)頭

  • Access-Control-Allow-Origin 該字段必填辙芍。它的值要么是請求時(shí)Origin字段的具體值刹枉,要么是一個(gè)*微谓,表示接受任意域名的請求窖剑。
  • Access-Control-Allow-Methods 該字段必填零蓉。它的值是逗號(hào)分隔的一個(gè)具體的字符串或者*糜工,表明服務(wù)器支持的所有跨域請求的方法捕传。注意筐骇,返回的是所有支持的方法斤寇,而不單是瀏覽器請求的那個(gè)方法。這是為了避免多次"預(yù)檢"請求拥褂。
  • Access-Control-Expose-Headers 該字段可選娘锁。CORS請求時(shí),XMLHttpRequest對象的getResponseHeader()方法只能拿到6個(gè)基本字段:Cache-Control饺鹃、Content-Language莫秆、Content-Type、Expires悔详、Last-Modified镊屎、Pragma。如果想拿到其他字段茄螃,就必須在Access-Control-Expose-Headers里面指定缝驳。
  • Access-Control-Allow-Credentials 該字段可選。它的值是一個(gè)布爾值归苍,表示是否允許發(fā)送Cookie.默認(rèn)情況下用狱,不發(fā)生Cookie,即:false拼弃。對服務(wù)器有特殊要求的請求夏伊,比如請求方法是PUT或DELETE,或者Content-Type字段的類型是application/json吻氧,這個(gè)值只能設(shè)為true溺忧。如果服務(wù)器不要瀏覽器發(fā)送Cookie,刪除該字段即可盯孙。
  • Access-Control-Max-Age 該字段可選鲁森,用來指定本次預(yù)檢請求的有效期,單位為秒振惰。在有效期間歌溉,不用發(fā)出另一條預(yù)檢請求。

2 解決方法

2.1 實(shí)現(xiàn)WebMvcConfigurer

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOriginPatterns("*")
                .allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
                .allowCredentials(true)
                .maxAge(3600)
                .allowedHeaders("*");
    }
}

2.2 過濾器實(shí)現(xiàn)

import org.springframework.context.annotation.Configuration;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebFilter(filterName = "CorsFilter ")
@Configuration
public class CorsFilter implements Filter {
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin","*");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, PATCH, DELETE, PUT");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
        chain.doFilter(req, res);
    }
}

2.3 @CrossOrigin注解(推薦)

最小粒度的cors控制辦法了报账,精確到單個(gè)請求級(jí)別研底。

public class GoodsController {
    @CrossOrigin(origins = "http://localhost:4000")
    @GetMapping("goods-url")
    public Response queryGoodsWithGoodsUrl(@RequestParam String goodsUrl) throws Exception {}
}  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末埠偿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子榜晦,更是在濱河造成了極大的恐慌冠蒋,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乾胶,死亡現(xiàn)場離奇詭異抖剿,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)识窿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門斩郎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人喻频,你說我怎么就攤上這事缩宜。” “怎么了甥温?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵锻煌,是天一觀的道長。 經(jīng)常有香客問我姻蚓,道長宋梧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任狰挡,我火速辦了婚禮捂龄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘加叁。我一直安慰自己倦沧,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布殉农。 她就那樣靜靜地躺著刀脏,像睡著了一般局荚。 火紅的嫁衣襯著肌膚如雪超凳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天耀态,我揣著相機(jī)與錄音轮傍,去河邊找鬼。 笑死首装,一個(gè)胖子當(dāng)著我的面吹牛创夜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播仙逻,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼驰吓,長吁一口氣:“原來是場噩夢啊……” “哼涧尿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起檬贰,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤姑廉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后翁涤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體桥言,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年葵礼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了号阿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鸳粉,死狀恐怖扔涧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情届谈,我是刑警寧澤扰柠,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站疼约,受9級(jí)特大地震影響卤档,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜程剥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一劝枣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧织鲸,春花似錦舔腾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瀑踢,卻和暖如春扳还,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背橱夭。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國打工氨距, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人棘劣。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓俏让,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子首昔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 前后端分離大勢所趨寡喝,跨域問題更是老生常談,隨便用標(biāo)題去google或百度一下勒奇,能搜出一大片解決方案拘荡,那么為啥又要寫...
    小白不想上班閱讀 122評(píng)論 0 0
  • 0. 背景 瀏覽器中,網(wǎng)站A的網(wǎng)絡(luò)請求訪問網(wǎng)站A的資源(圖片撬陵,HTTP請求)是很順暢的珊皿,而想訪問網(wǎng)站B的資源,就要...
    張?jiān)骑wVir閱讀 971評(píng)論 0 1
  • 1. 什么是跨域 跨域巨税,是指瀏覽器不能執(zhí)行其他網(wǎng)站的腳本蟋定。它是由瀏覽器的同源策略造成的,是瀏覽器對JavaScri...
    cbw100閱讀 6,334評(píng)論 2 86
  • 轉(zhuǎn)載自:http://www.ruanyifeng.com/blog/2016/04/cors.html作者: 阮...
    與你清歡_李閱讀 290評(píng)論 0 0
  • 久違的晴天草添,家長會(huì)驶兜。 家長大會(huì)開好到教室時(shí),離放學(xué)已經(jīng)沒多少時(shí)間了远寸。班主任說已經(jīng)安排了三個(gè)家長分享經(jīng)驗(yàn)抄淑。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,523評(píng)論 16 22