Springboot CORSクロスドメインアクセス
クロスドメインとは何ですか
起源ポリシーの制限ブラウザ:それは同一生成元ポリシーの欠如は、ブラウザの通常の機能が影響を受ける可能性がある場合は、ブラウザのコアは、また、最も基本的なセキュリティ機能です。ウェブは、同一生成元ポリシーに基づいて構築されると言うことができますが、ブラウザが実現元ポリシーに向けられています。元ポリシーは、別のドメインの相互作用にドメインJavaScriptのスクリプトとコンテンツを防ぐことができます。いわゆる相同(同一でドメインを参照)は、2つのページが同じプロトコル(プロトコル)、ホスト(ホスト)とポート番号(ポート)を有しています
URLリクエストすると、プロトコル、ドメイン名、ポート三つの異なるクロスドメインのいずれかとの間には、現在のページのURLは、
例えば:
現在のページのURL | 要求されたページのURL | クロスドメインかどうか** | 理由 |
---|---|---|---|
http://www.test.com/ | http://www.test.com/index.html | ノー | 相同(プロトコル名、同じポート番号) |
http://www.test.com/ | https://www.test.com/index.html | クロスドメイン | 異なるプロトコル(HTTP / HTTPS) |
http://www.test.com/ | http://www.baidu.com/ | クロスドメイン | プライマリドメイン名の異なる(テスト/百度) |
http://www.test.com/ | http://blog.test.com/ | クロスドメイン | 異なるサブドメイン(WWW /ブログ) |
http://www.test.com:8080/ | http://www.test.com:7001/ | クロスドメイン | 異なるポート番号(7001分の8080) |
クロスドメインの制限
[1]クッキー、のlocalStorageとのIndexedDBの非相同ページを読むことができません
[2]非相同ページのDOMへのアクセスなし
[3]は、アドレスの非相同的にAJAXリクエストを送信することはできません。
CORSベースSpringbootビルド、クロスドメインアクセス
クロスドメイン・リソース・サーバを構築するためのベースSpringBoootプロジェクトは、Ajaxリクエストへのアクセスの外に立つことができます。
この方法の一つ:
各コントローラに追加@CrossOrigin
前記@CrossOrigin 2つのパラメータ:
起源:ドメインのリストにアクセスできるように
MAXAGE:(秒)の応答の前に最大時間をキャッシュする準備が整いました。
@CrossOrigin追加されません。
@RestController
@RequestMapping("/test")
public class TestRequestLogController {
@RequestMapping("/request_log")
public String TestRequestLog(@RequestParam String name){
return "hello " + name;
}
}
プラス@CrossOrigin:
方法2:
@Configuration
public class CorsConfig {
private CorsConfiguration corsConfiguration(){
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.addAllowedHeader("*");
corsConfiguration.addAllowedMethod(HttpMethod.GET);
corsConfiguration.addAllowedMethod(HttpMethod.POST);
corsConfiguration.addAllowedOrigin("*");
return corsConfiguration;
}
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration());
return new CorsFilter(urlBasedCorsConfigurationSource);
}
}