クロスドメインの問題を解決するためのスプリングブート構成の3つの方法

クロスドメインの問題を解決するためのスプリングブート構成の3つの方法

まず、WebMvcConfigurerクラスを実装します。

直接コーディング:

@Configuration
public class GlobalCorsConfig implements WebMvcConfigurer{

	@Override
	public void addCorsMappings(CorsRegistry registry) {
	    // 设置允许跨域的路径
	    registry.addMapping("/**")
	        // 设置允许跨域请求的域名
	        .allowedOrigins("*")
	        // 是否允许证书 不再默认开启
	        .allowCredentials(true)
	        // 设置允许的方法
	        .allowedMethods("*")
	        // 跨域允许时间
	        .maxAge(3600);
	}
}

この構成は、springbootでは問題なく、springcloudのzuulで構成されます。ただし、
問題があり、サーバーが500をスローした場合でも、クロスドメインの問題
があり、これが最も簡単です。

2.構成クラスを記述します(推奨)
@Configuration
public class CorsConfig {
	private CorsConfiguration buildConfig() {
		CorsConfiguration corsConfiguration = new CorsConfiguration();
		//corsConfiguration.addAllowedOrigin("http://10.38.4.181:8020/"); // 允许任何域名使用
		corsConfiguration.addAllowedOrigin("*"); // 允许任何域名使用
		corsConfiguration.addAllowedHeader("*"); // 允许任何头
		corsConfiguration.addAllowedMethod("*"); // 允许任何方法(post、get等)
		corsConfiguration.setAllowCredentials(true);

		return corsConfiguration;
	}

	@Bean
	public CorsFilter corsFilter() {
		UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
		source.registerCorsConfiguration("/**", buildConfig()); // 对接口配置跨域设置
		return new CorsFilter(source);
	}
}
3.フィルターで要求ヘッダーを構成する
/**
 * 处理跨域问题
 *
 */

@Component
public class OriginFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }
    @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-Methods", "POST, GET, OPTIONS, DELETE,PUT");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
        chain.doFilter(req, res);
    }
    @Override
    public void destroy() {
        // TODO Auto-generated method stub
    }
}

このメソッドは、アンチSQLインジェクションメソッドの構成クラスに似ていますが、詳細については、アンチSQLインジェクションとXSS攻撃に関するブログを参照してください。

67件の元の記事を公開 いいね12 10,000人以上の訪問者

おすすめ

転載: blog.csdn.net/m0_37635053/article/details/103566221