まず、クロスドメインは何ですか
クロスドメインJavaScript対応ブラウザの同一生成元ポリシーを制限することがあります
第二には、どのような状況下でクロスドメインを持っています
異なるドメイン | wwww.baidu.com | www.jd.com |
同じドメイン名、別のポートへのアクセス | wwww.baidu.com:8080 | wwww.baidu.com:8081 |
同じレベルドメイン、2人のドメイン名にはありません | map.baidu.com | pan.baidu.com |
第三には、なぜクロスドメインの問題を抱えています
ページによって開始され、AJAX要求、現在のページのみのドメイン名と同じパス、効果的にクロスを防ぐことができます。問題は1つのAJAXリクエストのためのブラウザのクロスドメインセキュリティ制限であるため、駅攻撃。
従って:クロスドメインの問題は、Ajaxのための制限があります。
第四に、どのようにクロスドメインの問題を解決するために
1、のような、nginxの下のアクセスにファイルnginx.confをドメイン名とポート番号を設定します。
サーバー{
80聞きます。
SERVER_NAME aaaa.com;
proxy_set_header X-転送さ-ホスト$ホスト;
proxy_set_headerのX-転送さ-サーバの$ホスト;
proxy_set_headerのX-転送さ-について$ proxy_add_x_forwarded_for。
位置/ {
proxy_pass http://127.0.0.1:8888。
proxy_connect_timeout 600;
proxy_read_timeout 600;
}
}
サーバー{
80聞きます。
SERVER_NAME bbbb.com;
proxy_set_header X-転送さ-ホスト$ホスト;
proxy_set_headerのX-転送さ-サーバの$ホスト;
proxy_set_headerのX-転送さ-について$ proxy_add_x_forwarded_for。
位置/ {
proxy_pass http://127.0.0.1:9999。
proxy_connect_timeout 600;
proxy_read_timeout 600;
}
}
nginxの設定ファイルでは8888と9999 2つのポートを介してそれらにアクセスするために、それぞれ、2人のドメイン名、aaaa.comとbbbb.comを設定するには、ポートのドメイン名は、ドメイン名を取るために自由ではない、プロジェクトで使用されるべきです。
次のようなホストファイルと設定されたドメイン名に対応するIP 2、
aaaa.com 127.0.0.1
127.0.0.1 aaaa.com
ここでは、ドメインをドメイン名を設定し、同じngnixで設定するには
図3に示すように、データは、クロスドメインアクセスすることができるように、プロジェクトでフィルタを定義します
@Configuration
public class LeyouCorsConfig {
@Bean
public CorsFilter corsFilter(){
//初始化Cors配置对象
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowCredentials(true);//允许携带cookie
configuration.addAllowedOrigin("http://manage.leyou.com");//允许这个域名进行跨域访问
configuration.addAllowedHeader("*");//允许携带任何头信息
configuration.addAllowedMethod("*");//代表所有的请求方法:POST GET PUT Delete
//初始化Cors配置源对象
UrlBasedCorsConfigurationSource configurationSource = new UrlBasedCorsConfigurationSource();
configurationSource.registerCorsConfiguration("/**", configuration);//所有路径都需要解决跨域路径访问问题
//返回CorsFilter
System.out.println("可以进行跨域操作了=============================");
return new CorsFilter(configurationSource);
}
}