SpringBoot構成:
<依存> <groupIdを> org.springframework.boot </ groupIdを> <たartifactId>春・ブート・スターター・ウェブ</たartifactId> </依存関係>
@SuppressWarnings( "非推奨" ) @Configuration パブリック クラス CorsFilter 延びWebMvcConfigurerAdapter { @Override 公共 ボイドaddCorsMappings(CorsRegistryレジストリ){ registry.addMapping( "/ **" ).allowedHeaders() //の利用要求法、カンマ区切りを可能にしますオープン .allowedMethods(「*」) // 任意のドメイン要求の受け入れ .allowedOrigins(「*」) // クッキーの送信を許可するかどうかを示します。クッキーデフォルトのCORSリクエストに含まれていません。プレゼンテーションServer Expressの許可、クッキーがtrueに設定要求とともにサーバに送信含めることができます。 .allowCredentials(trueに) // リクエストをキャッシュする秒数。この時間内に、同じタイプのすべての要求は、要求を送信しないが、プリフライトを判断するための基礎として直接使用するためのヘッドを返す、非常に有用な、最適化要求のかなりの数 .maxAge(3600 ); } }
@SpringBootApplication @ComponentScan パブリック クラスCorsDemoApplication { 公共 静的 ボイドメイン(文字列[]引数){ SpringApplication.run(CorsDemoApplication クラス、引数)。 } }
@Controller @RequestMapping( "/ CORS" ) パブリック クラスCorsController { @RequestMapping(値 = "/インデックス" ) @ResponseBody パブリック文字列corsTest(HttpServletRequestのリクエスト、文字列名、文字列の年齢){ 文字列jsonpCallback = request.getParameterは( "コールバック" ); 地図 <文字列、オブジェクト>マップ= 新しい HashMapの<> (); map.put( "名前" 、名); map.put( "年齢" 、年齢); map.put( "日付"、新しい日付()); jsonpCallback + "(" + JSON.toJSONString(マップ)+ ")" ; } }
Ajaxリクエスト:
アヤックス$({ URL: "http://62.234.65.61:8090/cors/index" 、 種類: "POST" 、 データ:{ "名": "管理部" 、 "年齢":20である }、 データ型: " JSONP「/ * JSONP:」コールバック「コールバック関数JSONPパラメータ名の名前を取得するために、要求ハンドラ、またはページに渡されたが、//(デフォルトは通常、次のとおりです。コールバック) jsonpCallback:」コールバック」、//カスタムランダム関数のjQueryのデフォルト名が自動的に生成されたJSONPコールバック関数名は、あなたも書くことができます「?」、jQueryのデータを自動的に処理します* / 成功:機能(データ){ console.log( "RES:" + JSON.stringify(データ)); }、 エラー:関数(){ アラート( '失敗' )。 } })。
要約:
試験1:背景+前景が同じ試験結果が異なる、ローカルIPポートを実行している:RES:{ "日付":1560913652938、 "名前": "amdin"、 "年齢": "20"}
試験2:ローカル先行操作、クラウドサーバテンセントに背景、試験結果:RES:{「日付」:1560913652938、「名前」:「amdin」、「年齢」:「20」}
クロスドメインリクエストが正常に完了し、戻り値を取得することができます