SpringBoot ----クロスドメインの設定

はじめに:

リソース要求は、それ自身の最初のリソースは異なるドメインが提供されると、リソースが開始され、クロスドメインの HTTPリクエスト(クロスサイトHTTPリクエストを)。
例えば、ドメインA(  HTTP://domaina.example  )ドメインB <img>タグ(によって導入されたWebアプリケーションの  http://domainb.foo  )ピクチャリソース部位(:// DomainBのHTTP。 FOO / image.jpg)、ドメイン名  のWebアプリケーションは、ブラウザがクロスサイトHTTPリクエストを起動するようになります。
(CSS、画像、JavaScriptのスクリプト、および他のタイプのリソースを含む)さまざまなリソースをロードするためにクロスサイトHTTPリクエストを使用して、今日のWeb開発では、それが一般的で一般的な方法となっています。
ご存知のように、セキュリティ上の理由から、ブラウザがスクリプトによって開始され、クロスサイトリクエストを制限します。例えば、使用 のXMLHttpRequest を遵守しなければならないHTTPリクエスト元オブジェクト同一生成元ポリシーを具体的には、Webアプリケーション、およびのみ使用することができる  のXMLHttpRequestオブジェクトをHTTP要求を開始するために、その元のドメインにロードされているが、他のドメインへのリクエストを開始することはできません。セキュリティを損なうことなく、熱心に強く、より豊かな、より安全なWebアプリケーション、開発者を開発することができるようにするために、Webアプリケーションの技術は、より強力かつ豊富なことができます。たとえば、あなたが使用できる  のXMLHttpRequestを
クロスサイトHTTP要求を開始します。この説明ドメイン間不正確な、クロスドメインには、クロスサイトリクエストを開始するために、ブラウザを制限するものではありませんが、クロスサイトリクエストは通常開始することができるが、結果はブロックされ、ブラウザによって返されました。最良の例では、要求は、バックエンドサーバーに送信され、クロスサイト攻撃のCSRF原理かどうかであるクロスドメイン注意:一部のブラウザでは、のドメインからのHTTPS許可していないクロスドメインなどChromeとFirefoxなどのHTTPへのアクセス、ブラウザが要求時に発行されていないが、特殊なケースでリクエストを、傍受されます。
からの引用:
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS

 

方法:新しいクラスや構成ガイドは法とCorsConfigurationのCorsFilterアプリケーションを追加しました

コードをコピー
コードをコピー
輸入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   
パブリッククラスCorsConfig {   
    プライベートCorsConfiguration buildConfig(){   
        CorsConfiguration corsConfiguration =新しいCorsConfiguration()。  
        corsConfiguration.addAllowedOrigin( "*"); // 1允许任何域名使用
        corsConfiguration.addAllowedHeader( "*"); // 2允许任何头
        corsConfiguration.addAllowedMethod( "*");
    }  
  
    公共CorsFilter corsFilter(){   
        =新しいUrlBasedCorsConfigurationSource UrlBasedCorsConfigurationSource源()。  
        source.registerCorsConfiguration( "/ **"、buildConfig()); // 4   
        リターン新しいCorsFilter(ソース)。  
    }   
}  
コードをコピー
コードをコピー

方法2:フィルタモードを使用します

コードをコピー
コードをコピー
インポートのjavax.servlet。*;  
インポートのjavax.servlet.http.HttpServletResponse;  
インポートにjava.io.IOException;  
   
@Component   
パブリッククラスCorsFilterは、フィルタ{実装   
  
    最終静的org.slf4j.Loggerロガー= org.slf4j.LoggerFactory.getLogger(CorsFilter.class)を、  
 
    公共ボイドのdoFilter(のServletRequest REQ、たServletResponse RES、れるFilterChain鎖)にIOException、ServletExceptionが{スロー   
        HttpServletResponseの応答=(HttpServletResponseの)RESと、  
        response.setHeader(「アクセス制御-許可-起源」、「*」);  
        response.setHeader( "アクセス制御-許可-メソッド"、 "POSTは、DELETE、OPTIONS、GET");  
        response.setHeader(「アクセス・コントロール・マックス・エイジ」、「3600」)。  
        response.setHeader( "X-要求-で"、 "アクセス制御-ヘッダを許可")。  
        System.out.println( "*********************************过滤器被使用****** ******************** ");  
        chain.doFilter(REQ、RES)。  
    }   
    公共ボイドのinit(に、FilterConfigに、FilterConfig){}   
    公共ボイド破壊(){}   
}  
コードをコピー
コードをコピー

おすすめ

転載: www.cnblogs.com/maohuidong/p/11585889.html