目錄
一:解決問題
二:什么是跨域
三:cors跨域是什么??
一:解決問題
遇到錯誤:
????????前端請求時報錯
解決:
網(wǎng)關(guān)中添加配置文件,注意springboot版本,添加配置。
springboot升級成2.4.0以上時對AllowedOrigin設(shè)置發(fā)生了改變,不能有“ * ”,可以替換成AllowedOriginPattern
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
import org.springframework.web.util.pattern.PathPatternParser;
@Configuration
public class CorsConfig {
// 該配置適用于reactive響應(yīng)式環(huán)境
@Bean
public CorsWebFilter corsFilter() {
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true); //是否允許攜帶cookie
// config.addAllowedOrigin("*"); //可接受的域,是一個具體域名或者*(代表任意域名)
// springboot升級成2.4.0以上時對AllowedOrigin設(shè)置發(fā)生了改變,不能有”*“,可以替換成AllowedOriginPattern
config.addAllowedOriginPattern("*");
config.addAllowedHeader("*"); //允許攜帶的頭
config.addAllowedMethod("*"); //允許訪問的方式
config.setAllowCredentials(true);
// 必須是reactive包下的UrlBasedCorsConfigurationSource
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
source.registerCorsConfiguration("/**", config);
return new CorsWebFilter(source);
}
}
二:什么是跨域
跨域是指瀏覽器處于安全考慮,對 JavaScript 發(fā)起的不同源的請求進行限制的一種機制。
所謂同源是指協(xié)議,域名和端口完全相同,不同源間請求則被認(rèn)為是跨域的。
常見的跨域場景包括:
- 主域名相同,子域名不同的場景,如?www.example.com?和?api.example.com
- 端口號不同,如?www.example.com:8080?和?www.example.com:8081
- 協(xié)議不同,如?http://www.example.com?和?https://www.example.com
當(dāng) JavaScript 請求不同源的資源時,會被瀏覽器拒絕。這種瀏覽器的安全限制機制,就稱為同源策略。
跨域并不是請求本身的問題,而是同源策略的限制導(dǎo)致的。
要跨域訪問資源,常用的解決方法是通過 CORS、JSONP、代理等方式進行跨域資源共享。
繞過同源策略,使得不同源間的數(shù)據(jù)交互成為可能,這就是跨域問題的根本解決之道。
三:cors跨域是什么??
CORS(Cross-Origin Resource Sharing) 是跨域資源共享,是一種瀏覽器技術(shù),它允許在一個域名的網(wǎng)頁請求其他域名的資源,解決了AJAX請求跨域的限制。
跨域是指一個域下的網(wǎng)頁請求另一個域名的資源,默認(rèn)情況下是被瀏覽器禁止的。 CORS提供了一種跨域請求資源的標(biāo)準(zhǔn)方法。
CORS主要通過服務(wù)端的配置來實現(xiàn)跨域訪問,主要有以下幾點:
- 服務(wù)端的響應(yīng)頭中包含Access-Control-Allow-Origin字段,并指定允許請求資源的域名。
- 對預(yù)檢請求進行處理,響應(yīng)頭中包含Access-Control-Allow-Methods等字段,表明允許的請求方法。
- CORS請求需要攜帶Origin字段,表示請求來源。
- 支持憑證的請求需返回Access-Control-Allow-Credentials字段。
- OPTIONS請求用于預(yù)檢,以確定實際請求是否安全。
啟用CORS后,瀏覽器將根據(jù)CORS的頭信息判斷跨域請求是否安全,來決定是否允許這次跨域請求。文章來源:http://www.zghlxwxcb.cn/news/detail-611148.html
總之,CORS通過服務(wù)器配置請求域的白名單,并在頭信息中進行溝通,來決定跨域請求是否可以發(fā)出,從而實現(xiàn)跨域資源訪問。這是一個廣泛應(yīng)用的跨域解決方案。?文章來源地址http://www.zghlxwxcb.cn/news/detail-611148.html
到了這里,關(guān)于SpringCloudAlibaba:服務(wù)網(wǎng)關(guān)之Gateway的cors跨域問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!