Spring Boot設置跨域訪問

1. 什么是跨域HTTP請求

現代瀏覽器出于安全的考慮,使用 XMLHttpRequest對象發(fā)起 HTTP請求時必須遵守同源策略,否則就是跨域的HTTP請求,默認情況下是被禁止的。跨域HTTP請求是指A域上資源請求了B域上的資源,舉例而言,部署在A機器上Nginx上的js代碼通過ajax請求了部署在B機器Tomcat上的RESTful接口。

IP(域名)不同、或者端口不同,都會造成跨域問題。為了解決跨域的問題,曾經出現過jsonp、代理文件等方案,應用場景受限,維護成本高,直到HTML5帶來了CORS協(xié)議。

CORS是一個W3C標準,全稱是”跨域資源共享”(Cross-origin resource sharing),允許瀏覽器向跨源服務器,發(fā)出XMLHttpRequest請求,從而克服了AJAX只能同源使用的限制。它通過服務器增加一個特殊的Header[Access-Control-Allow-Origin]來告訴客戶端跨域的限制,如果瀏覽器支持CORS、并且判斷Origin通過的話,就會允許XMLHttpRequest發(fā)起跨域請求。

CROS常見header

  • Access-Control-Allow-Origin:http://somehost.com 表示允許http://somehost.com發(fā)起跨域請求。

  • Access-Control-Max-Age:86400 表示在86400秒內不需要再發(fā)送預校驗請求。

  • Access-Control-Allow-Methods: GET,POST,PUT,DELETE 表示允許跨域請求的方法。

  • Access-Control-Allow-Headers: content-type 表示允許跨域請求包含content-type

2. 在spring boot工程中配置CORS跨域

這里匹配了所有的URL,允許所有的外域發(fā)起跨域請求,允許外域發(fā)起請求任意HTTP Method,允許跨域請求包含任意的頭信息。

@Configuration
public class CORSConfiguration {
    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**")
                        .allowedHeaders("*")
                        .allowedMethods("*")
                        .allowedOrigins("*");
            }
        };
    }
}

也可以參考:https://spring.io/guides/gs/rest-service-cors/
跨域資源共享 CORS 詳解:http://www.ruanyifeng.com/blog/2016/04/cors.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容