CORSは、クロスドメインの問題を解決する(403の問題)

1.クロスドメインの問題とは何ですか?

  クロスドメインの問題は、Ajaxリクエストのために、ブラウザのセキュリティ制限です:のみ現在のページとページによって開始され、AJAX要求、ポートを持つドメイン名を持つパス効果的にクロスサイト攻撃を防ぐことができ、。

 

図2は、クロスドメインの問題を提供します。

  1、クロスドメインの問題は、Ajaxリクエスト固有の問題です。

     2、フロントおよびドメイン名の後端、一貫性のないポート。

3、CORS 単純な原理を解決するためにクロスドメイン分析を:

  CORSは、ブラウザとサーバーがサポートを必要としています。

 

  ブラウザ(ブラウザのオートコンプリート):

    2つの要求、第1の送信要求オプションを送信する - サーバーは、クロスドメインかどうかを尋ねることができます。

    第二は、正式な要求を送信することでした。

 

  サーバー側:

/フィルタインターセプタ統一を達成するため、対応するIP +ポート、適格であれば、一致するすべての要求フィルタリング応じて追加された最初のクロスドメインアクセス許可情報を

図4は、CORS クロスドメインソリューション:

  1、ゲートウェイクロスドメインフィルタでCORS構成:SpringMVCクロスドメインフィルタCORSを書き込むために、私たちを助けており、直接使用することができます。

  2、  ゲートウェイで設定ファイルを作成すると、フィルタは、ドメイン名とポートを採用することができる許可伝えます。

 

  ゲートウェイで設定ファイルに以下を追加します(下springMVC環境)

インポートorg.springframework.context.annotation.Bean;
 インポートorg.springframework.context.annotation.Configuration;
 インポートorg.springframework.web.cors.CorsConfiguration;
 インポートorg.springframework.web.cors.UrlBasedCorsConfigurationSource;
 インポートorg.springframework.web .filter.CorsFilter; 

@Configuration 
パブリック クラスGlobalCorsConfig { 
    @Bean 
    公共corsFilter corsFilter(){
         // 1. CORS設定情報の追加 
        CorsConfigurationの設定= 新しい新しいCorsConfigurationを();
         // 1)からドメインを許可、*書いていない、そうでない場合はクッキー私が使用することはできません
        config.addAllowedOrigin( "http://127.0.0.1:7001" )。
        config.addAllowedOrigin( "のhttp:// localhostを:7001" );
        // 2)是否发送クッキー信息の 
        config.setAllowCredentials(真の);
        // 3)允许的请求方式 
        config.addAllowedMethod( "OPTIONS" )。
        config.addAllowedMethod( "HEAD" ); 
        config.addAllowedMethod( "GET" ); 
        config.addAllowedMethod( "PUT" ); 
        config.addAllowedMethod( "POST" ); 
        config.addAllowedMethod( "DELETE"
        config.addAllowedMethod( "PATCH" );
         // 4)は、ヘッダー情報ことができます 
        config.addAllowedHeader( "*" );
         // 2.追加マップパス、我々はすべての要求をインターセプト 
        configSource = UrlBasedCorsConfigurationSource 新新
                (UrlBasedCorsConfigurationSource); 
        configSource.registerCorsConfiguration( "/ **" コンフィグ);
         // 3.リターン新しいCorsFilter。
        返す 新しい新CorsFilter(configSourceを); 
    } 
}

 

おすすめ

転載: www.cnblogs.com/wanghj-15/p/11374190.html