背景
私たちが現在行っているプロジェクトの多くは、フロントエンドとバックエンドから分離されており、非常に一般的な問題につながります。私たちのページとインターフェイスは、異なるドメイン名の下にあります。 AJAXを介してバックエンドインターフェイスにアクセスすると、クロスドメインの問題が発生します。この問題をどのように解決できますか?一般的に、CORSとJSONPの2つの解決策があります。 SpringはCORの構成を簡素化します。それが提供するCORを見てみましょう。
クロスドメインの問題の説明
Web開発はしばしばクロスドメインの問題に遭遇し、ソリューションにはJSONP、IFRAME、CORSなどが含まれます。
jsonpと比較したcors:
1。JSONPはGETリクエストのみを実装できますが、CORSはあらゆるタイプのHTTPリクエストをサポートします。
2. CORSを使用して、開発者は通常のXMLHTTPREQUESTを使用してリクエストを開始し、JSONPよりも優れたエラー処理を行うデータを取得できます。
3。JSONPは主に古いブラウザでサポートされています。多くの場合、CORSをサポートしておらず、ほとんどの最新のブラウザはすでにCORをサポートしています。
webmvcconfigurerオブジェクト
webmvcconfigurerオブジェクトを初期化して、CORSマッピングを構成できます。
@configurationpublic class corscongiguration {@bean public webmvcconfigurer corsconfigurer(){return new webmvcconfigureradapter(){@override public void addcorsmappings(corsregistry registry){registry.addmapping( "/api/**"); // amoldorigins( "http://domain2.com")//ソースドメイン名を指定// .allowedmethods( "put"、 "delete")// .allowedheaders( "header1"、 "header2"、 "header3")// .exposedersers( "header1"、 ")//")// .allowcredentials(false).maxage(3600); }}; }}WebmvcconfigurerAdapterを継承します
この方法は、上記の方法に非常に似ています
@configuration @enablewebmvcpublic class corsconfiguration_2 extends webmvcconfigureradapter {@override public void addcorsmappings(corsregistry registry){registry.addmapping( "/api/**"); }}corsfilter
この方法は今ではめったに使用されていません
@component@enablewebmvcpublic class corsfiltercongigurationは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); //すべてのフィルターの前にBeanを返す必要があります。 }}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。