Spring bootがまとめたクロスドメイン処理corsの方法
背景
今やっている多くのプロジェクトは全部前後で分離されています。これはよくある問題を引き出します。私たちのページとインターフェースはそれぞれのドメイン名の下にあります。ajaxを通じてバックエンドインターフェースを訪問すると、国境を越えた問題が発生します。このような問題はどう解決しますか?普通はcorsとjsonpの二つの案です。Springはcorsの構成を簡略化しました。次に、その提供されたcorsを見てみます。
ドメイン別問題の説明
Web開発ではしばしばクロスドメイン問題が発生します。解決策はjsonp、iframe、CORSなどがあります。
CORSはJSONPと比較します。
1、JSONPはGET要求しか実現できません。CORSはすべてのタイプのHTTP要求をサポートします。
2、CORSを使用して、開発者は普通のXMLHttpRequestを使って要求とデータを取得できます。JSONPよりもっと良いエラー処理があります。
3、JSONPは主に古いブラウザによって支持されています。彼らは往々にしてCORSを支持しないが、大多数の現代ブラウザはCORSを支持しています。
WebMvcConfigurオブジェクト
私たちはWebMvcConfigurオブジェクトを初期化して、私たちのcosマッピングを構成することができます。
この方法は上の方法と似ています。
この方式は今はあまり使われていません。
今やっている多くのプロジェクトは全部前後で分離されています。これはよくある問題を引き出します。私たちのページとインターフェースはそれぞれのドメイン名の下にあります。ajaxを通じてバックエンドインターフェースを訪問すると、国境を越えた問題が発生します。このような問題はどう解決しますか?普通はcorsとjsonpの二つの案です。Springはcorsの構成を簡略化しました。次に、その提供されたcorsを見てみます。
ドメイン別問題の説明
Web開発ではしばしばクロスドメイン問題が発生します。解決策はjsonp、iframe、CORSなどがあります。
CORSはJSONPと比較します。
1、JSONPはGET要求しか実現できません。CORSはすべてのタイプのHTTP要求をサポートします。
2、CORSを使用して、開発者は普通のXMLHttpRequestを使って要求とデータを取得できます。JSONPよりもっと良いエラー処理があります。
3、JSONPは主に古いブラウザによって支持されています。彼らは往々にしてCORSを支持しないが、大多数の現代ブラウザはCORSを支持しています。
WebMvcConfigurオブジェクト
私たちはWebMvcConfigurオブジェクトを初期化して、私たちのcosマッピングを構成することができます。
@Configuration
public class CorsCongiguration {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**"); //
// .allowedOrigins("http://domain2.com")//
// .allowedMethods("PUT", "DELETE")
// .allowedHeaders("header1", "header2", "header3")
// .exposedHeaders("header1", "header2")
// .allowCredentials(false).maxAge(3600);
}
};
}
}
WebMvcConfigrer Adapterを継承します。この方法は上の方法と似ています。
@Configuration
@EnableWebMvc
public class CorsConfiguration_2 extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**");
}
}
cors Filterこの方式は今はあまり使われていません。
@Component
@EnableWebMvc
public class CorsFilterCongiguration extends CorsFilter {
public CorsFilterCongiguration(CorsConfigurationSource configSource) {
super(configSource);
}
@Bean
public FilterRegistrationBean corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.addAllowedOrigin("*");
// config.addAllowedOrigin("http://domain1.com");
config.addAllowedHeader("*");
config.addAllowedMethod("*");
source.registerCorsConfiguration("/api/**", config);
FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
bean.setOrder(0); // Filter
return bean;
}
}
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。