亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Spring Security攔截器引起Java CORS跨域失敗的問題及解決

瀏覽:3日期:2022-08-09 08:21:48

在已設(shè)置CORS的項(xiàng)目中加入Spring Security,導(dǎo)致跨域訪問失敗,一開始以為是設(shè)置錯(cuò)CORS的問題,后來才發(fā)現(xiàn)是因?yàn)镾pring Security的攔截沖突引起的。

(一) CORS介紹

CORS是一個(gè)W3C標(biāo)準(zhǔn),全稱是”跨域資源共享”(Cross-origin resource sharing)。

它允許瀏覽器向跨源服務(wù)器,發(fā)出XMLHttpRequest請(qǐng)求,從而克服了AJAX只能同源使用的限制。

response響應(yīng)頭響應(yīng)頭字段名稱 作用 Access-Control-Allow-Origin 允許訪問的客戶端的域名 Access-Control-Allow-Credentials 是否允許請(qǐng)求帶有驗(yàn)證信息,若要獲取客戶端域下的cookie時(shí),需要將其設(shè)置為true。 Access-Control-Allow-Headers 允許服務(wù)端訪問的客戶端請(qǐng)求頭 Access-Control-Allow-Methods 允許訪問的HTTP請(qǐng)求方法 Access-Control-Max-Age 用來指定預(yù)檢請(qǐng)求的有效期(秒),在有效期內(nèi)不在發(fā)送預(yù)檢請(qǐng)求直接請(qǐng)求。

Cors詳細(xì)介紹請(qǐng)看阮一峰的跨域資源共享 CORS 詳解

(二) 服務(wù)端配置CORS(Spring boot)

1、直接寫個(gè)filter攔截所有請(qǐng)求在response頭里加上面的字段.

2、繼承WebMvcConfigurerAdapter重寫addCorsMappings

public class CorsConfig extends WebMvcConfigurerAdapter { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping('/**') .allowedHeaders('*') .allowedMethods('*') .allowedOrigins('*'); }}

自定義Filter,注冊(cè)

@Bean public FilterRegistrationBean corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); CorsConfiguration config = new CorsConfiguration(); config.addAllowedOrigin('*'); config.setAllowCredentials(true); config.addAllowedHeader('*'); config.addAllowedMethod('*'); source.registerCorsConfiguration('/**', config); FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source)); bean.setOrder(0);//配置CorsFilter優(yōu)先級(jí) return bean; }

@CrossOrigin注解

@CrossOrigin(origins = '*',allowCredentials = 'true',allowedHeaders = '*',methods = RequestMethod.GET,maxAge = 3600)(三) 出現(xiàn)的問題

即使配置了響應(yīng)頭字段,還是不能跨域訪問,經(jīng)過反復(fù)測(cè)試發(fā)現(xiàn),GET請(qǐng)求可以訪問,PUT請(qǐng)求無法訪問,突然想起:非簡(jiǎn)單請(qǐng)求會(huì)發(fā)起一個(gè)OPTIONS方法的預(yù)檢請(qǐng)求,而我用了Spring Security攔截了所有請(qǐng)求,只開放部分請(qǐng)求,所以需要在Spring Security中設(shè)置不攔截OPTIONS方法的請(qǐng)求。

解決方法

配置Spring Security,設(shè)置不攔截OPTIONS請(qǐng)求

HttpSecurity#authorizeRequests() .antMatchers(HttpMethod.OPTIONS) .permitAll()

配置CorsFilter優(yōu)先級(jí),優(yōu)于Spring Security配置即可!

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 亚洲精品日本高清中文字幕 | 国产精品高清一区二区不卡 | 国产精品第一页在线 | 亚洲欧美日韩国产 | 6080yy午夜不卡一二三区 | 亚洲一区二区三区四区在线 | 黄视频国产| 亚洲国产成人影院播放 | 91丨国产 | 亚洲国产高清视频在线观看 | 免费久草视频 | 香蕉视频在线免费看 | 一级黄色激情片 | 日韩欧美特一级大黄作a毛片免费 | 国产精品视频久久 | 日本精品在线 | 色婷婷综合缴情综六月 | 看中国国产一级毛片真人视频 | 国产成人精品免费视频大全五级 | 亚洲 欧美 中文 日韩欧美 | 在线欧美成人 | 国产在线一区观看 | 亚洲福利一区二区精品秒拍 | 国产高清成人吃奶成免费视频 | 第一页综合 | 亚洲成人免费视频 | 久久精品一区二区三区日韩 | 免费激情 | 狠狠ri| 一区二区中文字幕在线观看 | 狠狠狠色丁香婷婷综合久久五月 | 国产一区二卡三区四区 | 人人婷婷色综合五月第四人色阁 | 看一级黄色大片 | 91福利国产在线观看网站 | 国产免费久久精品99re丫y | 91香蕉视频在线播放 | 亚洲欧美日韩一区二区在线观看 | 国产v在线在线观看羞羞答答 | 最近更新中文字幕第一页 | 亚洲va中文字幕欧美不卡 |