[SpringBoot] Résoudre les problèmes inter-domaines

Version Springboot :

2.7.8

problèmes inter-domaines

En raison des restrictions de la politique de même origine du navigateur. La même politique d'origine (Same origin policy) est une convention, qui est la fonction de sécurité principale et la plus basique du navigateur. Si la même politique d'origine est manquante, les fonctions normales du navigateur peuvent être affectées. On peut dire que le Web est construit sur la base de la politique de même origine et que le navigateur n'est qu'une implémentation de la politique de même origine.

La politique de même origine empêche les scripts javascript d'un domaine d'interagir avec le contenu d'un autre domaine. La soi-disant même origine (c'est-à-dire dans le même domaine) signifie que deux pages ont le même protocole (protocole), hôte (hôte) et numéro de port (port)

Comment est-ce interdomaine ?

Lorsque l'un des protocoles, noms de domaine et ports d'une URL de demande est différent de l'URL de la page actuelle, il s'agit d'un domaine interdomaine.

solution

Ajouter une classe de configuration

 
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 {
    
    

    private CorsConfiguration buildConfig() {
    
    
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        // 允许任何域名使用
        corsConfiguration.addAllowedOriginPattern("*");
        // 允许任何头
        corsConfiguration.addAllowedHeader("*");
        // 允许任何方法(post、get等)
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.setAllowCredentials(true);
        return corsConfiguration;
    }

	//下面两个方法二选一
    @Bean
    public CorsFilter corsFilter() {
    
    
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        // 对接口配置跨域设置
        source.registerCorsConfiguration("/**", buildConfig());
        return new CorsFilter(source);
    }
    
    // 下面代码是将一个名为corsFilter的CorsFilter过滤器注册到Servlet容器中。具体来说,setOrder(-101)方法设置了该过滤器的执行顺序为最低优先级。当请求到达Web应用程序时,CorsFilter过滤器将首先被执行,以检查是否需要进行跨域请求的CORS处理。如果需要进行跨域请求的CORS处理,则CorsFilter过滤器将允许请求通过,否则将拒绝请求并返回错误响应。 
	@Bean
    public FilterRegistrationBean corsFilterBean() {
    
    
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        // 对接口配置跨域设置
        source.registerCorsConfiguration("/**", buildConfig());
        CorsFilter corsFilter = new CorsFilter(source);
        FilterRegistrationBean<CorsFilter> filterRegistrationBean = new FilterRegistrationBean<>(corsFilter);
        filterRegistrationBean.setOrder(-101);
        return filterRegistrationBean;
    }

}

Je suppose que tu aimes

Origine blog.csdn.net/daohangtaiqian/article/details/130205261
conseillé
Classement