理解跨域,我們首先應該理解web的同源策略。
什么是同源策略?
- 它是瀏覽器的一個安全策略,就是限制當前源與其它源進行交互,這樣就能阻隔惡意文檔和減少可能被攻擊的媒介。
何為同源?
- 若有兩個URL,只有協議(protocol)、域名(host)、端口號(port),三者相同時,才能被稱之為同源。
何為跨域訪問?
- 當要在不同源之間進行數據交互時,這個過程跨域就可稱之為跨域訪問。
- 那我的項目舉個例子(前后端分離項目,開發環境,Vue運行http://localhost:8081,后端運行http://localhost:8080)
前端登陸頁面的表單數據通過Ajax提交給后端的/login接口進行處理,此時就是在跨域訪問
后端解決跨域的一種方案
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry corsRegistry){
corsRegistry.addMapping("/**")//允許跨域的訪問路徑
.allowedOrigins("http://localhost:8081")//允許跨域訪問的源
.allowedMethods("POST","GET","PUT","OPTIONS","DELETE")//允許請求方法
.allowCredentials(true)//是否允許發送cookie
.maxAge(3600)//預檢的間隔時間
.allowedHeaders("*");//允許跨域訪問的header
}
}