SpringBoot解決跨域問(wèn)題(CORS)

跨域資源共享(CORS)是前后端分離項(xiàng)目很常見(jiàn)的問(wèn)題,本文主要是介紹在Springboot項(xiàng)目中通過(guò)cors協(xié)議解決跨域問(wèn)題

CORS協(xié)議

CORS是一個(gè)W3C標(biāo)準(zhǔn),全稱是"跨域資源共享"(Cross-origin resource sharing)。
它允許瀏覽器向跨源服務(wù)器,發(fā)出XMLHttpRequest請(qǐng)求,從而克服了AJAX只能同源使用的限制。

解決方案

1.基于WebMvcConfigurerAdapter配置加入Cors的跨域

通過(guò)實(shí)現(xiàn)WebMvcConfigurer接口中的addCorsMappings方法來(lái)實(shí)現(xiàn)跨域

/**
 * 跨域配置類
 */
@Configuration
public class CorsConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")//*表示允許任何域名使用
                .allowCredentials(true)
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS", "HEAD")
                .maxAge(3600);
    }

}
  • addMapping:配置可以被跨域的路徑,可以任意配置
  • allowedOrigins:* 代表允許所有的請(qǐng)求域名訪問(wèn)我們的跨域資源
  • allowCredentials:響應(yīng)頭表示是否可以將請(qǐng)求的響應(yīng)暴露給頁(yè)面
  • allowedMethods:允許所有的請(qǐng)求header訪問(wèn),可以自定義設(shè)置任意請(qǐng)求頭信息
  • maxAge:配置客戶端緩存預(yù)檢請(qǐng)求的響應(yīng)時(shí)間(單位為秒)

2.采用過(guò)濾器(filter)的方式

@Component
public class CorsFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse res = (HttpServletResponse) response;
        res.addHeader("Access-Control-Allow-Credentials", "true");
        res.addHeader("Access-Control-Allow-Origin", "*");
        res.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, HEAD");
        res.setHeader("Access-Control-Allow-Headers", "access-control-allow-origin, authority, content-type, version-info, X-Requested-With");

        chain.doFilter(request, response);

    }
    public void init(FilterConfig filterConfig) {}

    public void destroy() {}
}

Spring官方文檔學(xué)習(xí)地址:https://spring.io/blog/2015/06/08/cors-support-in-spring-framework

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容