本篇文章主要介紹了,如何通過Nginx配置跨域,并覆寫后端服務跨域配置,
先看下后端代碼跨域配置:
主要的目標是:不修改后端跨域配置代碼,來實作Nginx跨域指定域名,
@Bean
public CorsFilter corsFilter() {
final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
final CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.setAllowCredentials(true);
corsConfiguration.addAllowedOrigin("*");
corsConfiguration.addAllowedHeader("*");
corsConfiguration.addAllowedMethod("*");
urlBasedCorsConfigurationSource.registerCorsConfiguration("/**",
corsConfiguration);
log.info("跨域已啟動");
return new CorsFilter(urlBasedCorsConfigurationSource);
}
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
Nginx覆寫后端代理服務的header,有兩種實作方式
- 使用 proxy_hide_header 方式實作,
- 使用more_set_headers 'Access-Control-Allow-Origin: 指定域名';
使用 proxy_hide_header 方式實作:
server {
listen 7077;
server_name localhost;
add_header Access-Control-Allow-Headers "*";
add_header Access-Control-Allow-Methods "POST, GET, PUT, PATCH, OPTIONS";
#隱藏后端服務回應中的 Access-Control-Allow-Origin 標頭
proxy_hide_header 'Access-Control-Allow-Origin';
# 隱藏后再次添加 Access-Control-Allow-Origin 標頭,只允許8091域下訪問
add_header 'Access-Control-Allow-Origin' 'http://192.0.0.1:8091';
location /xxx/pc {
proxy_pass http://192.0.0.1:7077;
}
}
使用more_set_headers方式實作:
more方式需要安裝nginx模塊,模塊安裝可以參考:more安裝步驟
server {
listen 7077;
server_name localhost;
add_header Access-Control-Allow-Headers "*";
add_header Access-Control-Allow-Methods "POST, GET, PUT, PATCH, OPTIONS";
#直接設定后端服務回應中的 Access-Control-Allow-Origin 標頭內容,
more_set_headers 'Access-Control-Allow-Origin: http://192.0.0.1:8091'
location /xxx/pc {
proxy_pass http://192.0.0.1:7077;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/550917.html
標籤:其他
上一篇:Maven的使用
下一篇:返回列表
