前提:
-
この記事は、春のブートソリューションに基づいています。用語やその他の問題やプロセスのCORSの説明は、それらを繰り返さないで、参照アドレスの後ろに見つけることができます。
問題:
- フロントエンドドッキング、クロスドメインの問題、およびAuthorizationヘッダ値の内部には得ることができませんでした。
ソリューション:
最初の方法:設定ファイルの設定に次のコードクラスを追加します。問題は、我々は別のフィルタインターセプタを追加する場合、前と順番の優先度で処理した後のポイントがあり、そこであり、私はそのような状況を表示されることがあります-クロスドメインの問題が解決されていますが、単にヘッダの低下を得ることができませんキー値の値の認可(ヘッダーに迎撃の前で値を取得するために行くためには、ヌルだったでしょう、認定は401後ろの原因となって、今回のクロスドメイン、あるいはまったく問題ました。これはピットの私のステップです) 。
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
/**
* @description: 处理请求跨域问题
* @author: jcc
* @date: 2018-11-16 11:51
* @Modified By:
*/
@Configuration
public class CORSConfiguration {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedHeaders("*")
.allowedMethods("*")
.allowedOrigins("*");
}
};
}
}
第二の方法:設定ファイルの設定に次のコードクラスを追加します。ここで非常に重要なポイントは、ときbean.setOrder(0)することにより、他のインターセプタがあるということです。ロード順序を設定し、私はこの方法で問題を解決(私は実際にクラスのconfig設定ファイルにこのコードを入れていませんしかし、豆の主な機能以下のコードをコピーします)。
@Configuration
public class CorsConfig {
@Bean
public FilterRegistrationBean corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
// 设置你要允许的网站域名,如果全允许则设为 *
config.addAllowedOrigin("http://localhost:4200");
// 如果要限制 HEADER 或 METHOD 请自行更改
config.addAllowedHeader("*");
config.addAllowedMethod("*");
source.registerCorsConfiguration("/**", config);
FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
// 这个顺序很重要哦,为避免麻烦请设置在最前
bean.setOrder(0);
return bean;
}
}
第三の方法であるが、この設定順序が発行されていない主な機能又はビーンビーン内に配置され、この構成設定を追加します。
@Bean
public CorsFilter corsFilter() {
final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
final CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true); // 允许cookies跨域
config.addAllowedOrigin("*");// 允许向该服务器提交请求的URI,*表示全部允许。。这里尽量限制来源域,比如http://xxxx:8080 ,以降低安全风险。。
config.addAllowedHeader("*");// 允许访问的头信息,*表示全部
config.setMaxAge(18000L);// 预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了
config.addAllowedMethod("*");// 允许提交请求的方法,*表示全部允许,也可以单独设置GET、PUT等
/* config.addAllowedMethod("HEAD");
config.addAllowedMethod("GET");// 允许Get的请求方法
config.addAllowedMethod("PUT");
config.addAllowedMethod("POST");
config.addAllowedMethod("DELETE");
config.addAllowedMethod("PATCH");*/
source.registerCorsConfiguration("/**", config);
return new CorsFilter(source);
}
参照:
クロスオリジンリソースの共有CORSの深さ - ルアンYifeng
ドメイン、およびカスタムクエリページネーションを越え - 春ブーツ(5)の後端を取り戻します
分離した後に終了する予定春クラウド前後のクロスドメインアクセスソリューション
注:脇の質問-問題がある場合は、後に特定のマイクロゲートウェイサービスは、クロスドメイン構成を解決するように設定されています。