SpringBoot解決跨域訪問及Session一致性

方法1:使用 @CrossOrigin 註解,能夠加在類上 也能夠加在方法上;java

方法2:添加全局配置 (新增一個配置類)ajax

@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
                .maxAge(3600)
                .allowCredentials(true);
    }
}

方法3:自定義Filter攔截器跨域

/**
 * 跨域請求攔截器
 */
@Component
public class CorsFilter implements Filter {
 
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        /* 本身的代碼 */
        System.out.println("CorsFilter init...");
    }
 
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        System.out.println("CorsFilter doFilter...");
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;
        //容許請求攜帶認證信息(cookie)
        res.setHeader("Access-Control-Allow-Credentials", "true");
        //指定容許其餘域名訪問
        res.setHeader("Access-Control-Allow-Origin", req.getHeader("Origin"));
        //容許請求的類型
        res.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH");
        //容許的請求頭字段
        res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
        //設置預檢請求的有效期
        //瀏覽器同源策略:出於安全考慮,瀏覽器限制跨域的http請求。怎樣限制呢?經過發送兩次請求:預檢請求、用戶請求。
        //一、預檢請求做用:獲知服務器是否容許該跨域請求:若是容許,才發起第二次真實的請求;若是不容許,則攔截第二次請求
        //二、單位:s,在此期間不用發送預檢請求。
        //三、若爲0:表示每次請求都發送預檢請求,每一個ajax請求以前都會先發送預檢請求。
        res.setHeader("Access-Control-Max-Age", "3600");
        //OPTIONS Method表示瀏覽器發送的預檢請求。
        if ("OPTIONS".equalsIgnoreCase(req.getMethod())) {
            res.setStatus(HttpServletResponse.SC_OK);
        } else {
            /* 本身的代碼 */
            chain.doFilter(req, res);
        }
    }
 
    @Override
    public void destroy() {
        /* 本身的代碼 */
        System.out.println("CorsFilter destroy...");
    }
}

參考自:https://blog.csdn.net/rongtaoup/article/details/89497471瀏覽器

 

  另外,我使用maven打jar包時,java -jar ... 老是啓動失敗,解壓查看發現沒有resources下的配置文件,緣由是:resources 寫錯了,少了一個s。(尷尬ing,同時好奇爲何以前是能夠的?)安全

 祝咱們乘風破浪服務器

野蠻生長cookie

相關文章
相關標籤/搜索