CORS跨域相關(guān)知識(shí)整理

在前后端分離的項(xiàng)目中,以往跨域一般采用JSONP的方式,但是JSONP只支持GET請(qǐng)求,所以現(xiàn)在一般都不會(huì)采用JSONP的方式來處理跨域了?,F(xiàn)在基本都是使用CORS的方式,要么在nginx中配置,如add_header 'Access-Control-Allow-Origin' *;add_header 'Access-Control-Allow-Methods' *;
要么就在后臺(tái)服務(wù)器中配置response.setHeader("Access-Control-Allow-Origin", "*");......以往只知道copy過來就Ok了,從未思考過這些參數(shù)的代表的意思。直到最近在釘釘應(yīng)用的開發(fā)中踩到了坑,最終發(fā)現(xiàn)還是Access-Control-Allow-Headers配置為*導(dǎo)致不生效。所以對(duì)CORS做了較為深入的了解以及整理。

image

SpringBoot2.x版本關(guān)于CORS的配置

@Configuration
public class WebConfiguration implements WebMvcConfigurer {
    /**
     * 跨域設(shè)置
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowCredentials(true)
                .allowedMethods("*")
                .allowedHeaders("*");
    }
}

SpringBoot1.x版本

@WebFilter(filterName = "corsFilter")
@Configuration
public class CorsFilter implements Filter {
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin","*");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Methods", "*");
        response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
        chain.doFilter(req, res);
    }
}

參考
https://www.w3.org/TR/cors/
http://www.ruanyifeng.com/blog/2016/04/cors.html

最后編輯于
?著作權(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)容

  • 什么是跨域 跨域,是指瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對(duì)JavaScript實(shí)...
    他方l閱讀 1,136評(píng)論 0 2
  • 什么是跨域 跨域,是指瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對(duì)JavaScript實(shí)...
    Yaoxue9閱讀 1,412評(píng)論 0 6
  • XMLHttpRequest的跨域請(qǐng)求 動(dòng)態(tài)添加一個(gè)標(biāo)簽,而script標(biāo)簽的src屬性是沒有跨域的限制的。這樣說...
    葛高召閱讀 22,840評(píng)論 0 0
  • 什么是跨域 跨域,是指瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對(duì)JavaScript實(shí)...
    HeroXin閱讀 955評(píng)論 0 4
  • Java跨域問題以及如何使用Cors解決前后端 分離部署項(xiàng)目所遇到的跨域問題 什么是跨域 跨域,指的是瀏覽器不能執(zhí)...
    kevin0016閱讀 2,804評(píng)論 0 6

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