ajax 请求_前端后分离Ajax跨域请求保证Session一致

4de291c23d28a2d881db9ca702c22322.png

JAVA码牛牛,程序员学习指南

前后端分离的项目,使用Ajax请求一般都出现跨域的问题。

跨域的时候所创建的session是不会被浏览器保存下来的。所以每次进行跨域请求时,服务器都认为不是同一个浏览器所发起的请求,session也会不一样。以下将介绍如何保证session一致。

前端Ajax请求:

    $.ajax({        url:url,                xhrFields: {           withCredentials: true        },        crossDomain: true,                success:function() {        },        error:function() {        }    });

后端构建一个拦截器,对需要跨域访问的request头部重写,如:

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {        HttpServletResponse response= (HttpServletResponse) servletResponse;        HttpServletRequest request=(HttpServletRequest)servletRequest;        response.setHeader("Access-Control-Allow-Origin", "*");        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");        response.setHeader("Access-Control-Max-Age", "3600");        response.setHeader("Access-Control-Allow-Headers", "x-requested-with");        response.setHeader("Access-Control-Allow-Credentials", "true");        response.setHeader("XDomainRequestAllowed","1");        filterChain.doFilter(servletRequest,servletResponse);    }

另外Spring boot的项目可以添加拦截配置,如:

    @Component    @Order(Ordered.HIGHEST_PRECEDENCE)    public class AuthCorsFilter extends CorsFilter {        public AuthCorsFilter() {            super(configurationSource());        }        private static UrlBasedCorsConfigurationSource configurationSource() {            CorsConfiguration config = new CorsConfiguration();            config.setAllowCredentials(true);            config.addAllowedOrigin("*");            config.addAllowedHeader("*");            config.addAllowedMethod("*");            config.setAllowCredentials(true);            UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();            source.registerCorsConfiguration("/**", config);            return source;        }    }
9f4cc40bc70d044ae9218ac0e5dad494.gif

想学习更多Java知识,快关注我吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值