場景
之所以會跨域,是因為受到了同源策略的限制,同源策略要求源相同才能正常進行通信,即協議、域名、端口號都完全一致。
瀏覽器出於安全的考慮,使用 XMLHttpRequest對象發起 HTTP請求時必須遵守同源策略,否則就是跨域的HTTP請求,默認情況下是被禁止的。換句話說,瀏覽器安全的基石是同源策略。
在使用SpringBoot寫的后台接口,再通過js進行請求時提示跨域問題,但是直接在瀏覽器中請求或者使用postman請求是沒有問題的。
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。
實現
在SpringBoot項目中只需要編寫一個配置類使其實現WebMvcConfigurer接口並重寫其addCorsMappings方法即可。
代碼如下
@Configuration public class ResourcesConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { // 設置允許跨域的路徑 registry.addMapping("/**") // 設置允許跨域請求的域名 .allowedOrigins("*") // 是否允許證書 .allowCredentials(true) // 設置允許的方法 .allowedMethods("GET", "POST", "DELETE", "PUT") // 設置允許的header屬性 .allowedHeaders("*") // 跨域允許時間 .maxAge(3600); } }
然后在重寫的方法中設置允許跨域訪問的路徑和域名以及允許發方法和header等,這里是設置的允許所有。