欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot跨域過濾器fetch react Response to preflight request doesn‘t pass access control check問題

 更新時(shí)間:2024年03月13日 10:42:55   作者:帥氣kkkk  
這篇文章主要介紹了springboot跨域過濾器fetch react Response to preflight request doesn‘t pass access control check問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

前言

瀏覽器出于安全考慮,限制了JS發(fā)起跨站請求,使用XHR對(duì)象發(fā)起請求必須遵循同源策略(SOP:Same Origin Policy),跨站請求會(huì)被瀏覽器阻止,這對(duì)開發(fā)者來說是很痛苦的一件事,尤其是要開發(fā)前后端分離的應(yīng)用時(shí)。

在現(xiàn)代化的Web開發(fā)中,不同網(wǎng)絡(luò)環(huán)境下的資源數(shù)據(jù)共享越來越普遍,同源策略可以說是在一定程度上限制了Web API的發(fā)展。

簡單的說,CORS就是為了請求能夠安全跨域而生的。至于CORS的安全性研究,本文不做探討。

CORS淺述

名詞解釋

跨域資源共享(Cross-Origin Resource Sharing)

概念

是一種跨域機(jī)制、規(guī)范、標(biāo)準(zhǔn),怎么叫都一樣,但是這套標(biāo)準(zhǔn)是針對(duì)服務(wù)端的,而瀏覽器端只要支持HTML5即可。

作用

可以讓服務(wù)端決定哪些請求源可以進(jìn)來拿數(shù)據(jù),所以服務(wù)端起主導(dǎo)作用(所以出了事找后臺(tái)程序猿,無關(guān)前端^ ^)

常用場景

前后端完全分離的應(yīng)用

服務(wù)端未允許跨域

服務(wù)端未允許跨域

如何解決

package pers.yiji.YiJiClientServer.util;

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

@Configuration
public class CorsConfig {

    /**
     * cors support
     * @return
     */
    @Bean
    public FilterRegistrationBean corsFilter() {
        // 注冊CORS過濾器
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true); // 是否支持安全證書
        config.addAllowedOrigin("*"); // 允許任何域名使用
        config.addAllowedHeader("*"); // 允許任何頭
        config.addAllowedMethod("*"); // 允許任何方法(post、get等)
        // 預(yù)檢請求的有效期,單位為秒。
        //        config.setMaxAge(3600L);

        source.registerCorsConfiguration("/**", config);
        FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
        bean.setOrder(0);
        return bean;
    }
}

具體每句話的意思基本上注釋都有寫。

主要就是為了注冊一個(gè)過濾器,這里是基本上允許所有的請求,在特殊的場景可以使用域名控制等。

config.addAllowedOrigin("*"); // 允許任何域名使用(*可以換成特定的域名)

結(jié)果

總結(jié)

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

相關(guān)文章

最新評(píng)論