最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot如何配置CROS Filter

 更新時(shí)間:2023年12月12日 08:37:14   作者:在奮斗的大道  
這篇文章主要介紹了SpringBoot如何配置CROS Filter問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

一、什么是CORS?

CORS是一個(gè)W3C標(biāo)準(zhǔn),全稱是”跨域資源共享”(Cross-origin resource sharing),允許瀏覽器向跨源服務(wù)器,發(fā)出XMLHttpRequest請求,從而克服了AJAX只能同源使用的限制。

它通過服務(wù)器增加一個(gè)特殊的Header[Access-Control-Allow-Origin]來告訴客戶端跨域的限制,如果瀏覽器支持CORS、并且判斷Origin通過的話,就會允許XMLHttpRequest發(fā)起跨域請求。

CORS Header 

  • Access-Control-Allow-Origin: http://www.xxx.com
  • Access-Control-Max-Age:86400
  • Access-Control-Allow-Methods:GET, POST, OPTIONS, PUT, DELETE
  • Access-Control-Allow-Headers: content-type
  • Access-Control-Allow-Credentials: true

含義解釋:

 二、SpringBoot跨域請求處理方式

方式一

直接采用SpringBoot的注解@CrossOrigin(也支持SpringMVC)

Controller層在需要跨域的類或者方法上加上該注解即可

實(shí)戰(zhàn):

備注說明:Spring 版本必須大于等于4.2

方法二

處理跨域請求的Configuration

增加一個(gè)配置類CrossOriginConfig.java。

繼承WebMvcConfigurerAdapter或者實(shí)現(xiàn)WebMvcConfigurer接口

實(shí)戰(zhàn):

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
 
/**
 * AJAX請求跨域
 */
@Configuration
public class CorsConfig extends WebMvcConfigurerAdapter {
    static final String ORIGINS[] = new String[] { "GET", "POST", "PUT", "DELETE" };
    @Override
    public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/**")
     .allowedOrigins("*")
     .allowCredentials(true)
     .allowedMethods(ORIGINS)
     .maxAge(3600);
    }

方法三

采用過濾器(filter)的方式(推薦)

增加一個(gè)CORSFilter 類,并實(shí)現(xiàn)Filter接口即可

 
import java.io.IOException;
 
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
 
/**
 * 
 * @ClassName:  CorsFilter   
 * @Description: SpringBoot 跨域處理攔截器
 */
 
@Component
public class CROSFilter implements Filter {
	public static final Logger logger = LoggerFactory.getLogger(CROSFilter.class);
	
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		// TODO Auto-generated method stub
		
	}
 
	@Override
	public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
			throws IOException, ServletException {
		HttpServletResponse response = (HttpServletResponse) res;  
		  
        HttpServletRequest reqs = (HttpServletRequest) req;  
        /*
         * 跨域設(shè)置允所有請求跨域 
         * 如果允許指定的客戶端跨域設(shè)置: http://127.0.0.1:8020
         */
        response.setHeader("Access-Control-Allow-Origin","*");  
        response.setHeader("Access-Control-Allow-Credentials", "true");  
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");  
        response.setHeader("Access-Control-Max-Age", "3600");  
        response.setHeader("Access-Control-Allow-Headers", "Content-Type");  
        if (((HttpServletRequest) req).getMethod().equals("OPTIONS")) {
            response.getWriter().println("ok");
            return;
        }
 
        chain.doFilter(req, res);  
	}
 
	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		
	}
 
}

解決遇到的錯誤

1、Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.

解決辦法

  response.setHeader("Access-Control-Allow-Headers", "Content-Type");  

2、Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

解決辦法:

if (((HttpServletRequest) req).getMethod().equals("OPTIONS")) {
            response.getWriter().println("ok");
            return;
        }

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • PostMan post請求發(fā)送Json數(shù)據(jù)的方法

    PostMan post請求發(fā)送Json數(shù)據(jù)的方法

    下面小編就為大家分享一篇PostMan post請求發(fā)送Json數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • SpringCloud消息總線Bus配置中心實(shí)現(xiàn)過程解析

    SpringCloud消息總線Bus配置中心實(shí)現(xiàn)過程解析

    這篇文章主要介紹了SpringCloud消息總線Bus配置中心實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 解讀yml文件中配置時(shí)間類型的轉(zhuǎn)換方式

    解讀yml文件中配置時(shí)間類型的轉(zhuǎn)換方式

    這篇文章主要介紹了yml文件中配置時(shí)間類型的轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java中使用阻塞隊(duì)列控制線程集實(shí)例

    Java中使用阻塞隊(duì)列控制線程集實(shí)例

    這篇文章主要介紹了Java控制阻塞隊(duì)列線程集實(shí)例,本文用一個(gè)程序展示了如何使用阻塞隊(duì)列來控制線程集,程序功能是在一個(gè)目錄及它的所有子目錄下搜索所有文件,打印出包含指定關(guān)鍵字的文件列表,需要的朋友可以參考下
    2015-01-01
  • 解析Spring?漏洞及其修復(fù)方案

    解析Spring?漏洞及其修復(fù)方案

    官宣了最近網(wǎng)傳的Spring漏洞。攻擊者利用該漏洞,可在未授權(quán)的情況下遠(yuǎn)程執(zhí)行命令,今天通過本文給大家普及下漏洞分析影響范圍及解決方案,感興趣的朋友跟隨小編一起看看吧
    2022-04-04
  • Java Stream中自定義Collector實(shí)現(xiàn)復(fù)雜數(shù)據(jù)收集的方法

    Java Stream中自定義Collector實(shí)現(xiàn)復(fù)雜數(shù)據(jù)收集的方法

    Java Stream API中的Collector接口是一個(gè)強(qiáng)大的工具,它允許我們自定義數(shù)據(jù)收集、轉(zhuǎn)換和聚合的過程,,本文介紹了Java Stream中自定義Collector實(shí)現(xiàn)復(fù)雜數(shù)據(jù)收集方法,需要的朋友可以參考下
    2024-08-08
  • springboot圖片驗(yàn)證碼功能模塊

    springboot圖片驗(yàn)證碼功能模塊

    用戶登錄幾乎是一個(gè)線上系統(tǒng)必不可少且使用相對比較頻繁的一個(gè)模塊,為了防止惡意暴力嘗試,防止洪水攻擊、防止腳本自動提交等,驗(yàn)證碼是一個(gè)較為便捷且行之有效的預(yù)防手段,這篇文章主要介紹了springboot圖片驗(yàn)證碼功能模塊,需要的朋友可以參考下
    2022-04-04
  • Java虛擬機(jī)JVM棧溢出的問題解決

    Java虛擬機(jī)JVM棧溢出的問題解決

    Java虛擬機(jī)棧溢出是指在Java程序中,當(dāng)線程調(diào)用的方法層級過深,導(dǎo)致??臻g溢出的情況,本文就詳細(xì)的介紹了下產(chǎn)生的原因以及優(yōu)化,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • java ArrayBlockingQueue阻塞隊(duì)列的實(shí)現(xiàn)示例

    java ArrayBlockingQueue阻塞隊(duì)列的實(shí)現(xiàn)示例

    ArrayBlockingQueue是一個(gè)基于數(shù)組實(shí)現(xiàn)的阻塞隊(duì)列,本文就來介紹一下java ArrayBlockingQueue阻塞隊(duì)列的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • java實(shí)現(xiàn)對excel文件的處理合并單元格的操作

    java實(shí)現(xiàn)對excel文件的處理合并單元格的操作

    這篇文章主要介紹了java實(shí)現(xiàn)對excel文件的處理合并單元格的操作,開頭給大家介紹了依賴引入代碼,表格操作的核心代碼,代碼超級簡單,需要的朋友可以參考下
    2021-07-07

最新評論

龙川县| 桐梓县| 丹阳市| 酒泉市| 凤台县| 呼伦贝尔市| 无为县| 洛川县| 晋城| 阳江市| 抚松县| 平谷区| 盐亭县| 古丈县| 增城市| 平阳县| 静海县| 蚌埠市| 申扎县| 九龙县| 漾濞| 聂拉木县| 合肥市| 资中县| 伊宁县| 云梦县| 正蓝旗| 彰武县| 涡阳县| 建宁县| 樟树市| 赣榆县| 东莞市| 九江市| 天长市| 宝兴县| 佛冈县| 宜阳县| 忻城县| 昭苏县| 西昌市|