前后端分离通过ajax,request无法发送cookie

来源:3-7 分布式session下

weixin_慕少5105451

2019-04-22

我用前后端分离进行登陆,端口不一样,login.html用ajax与后端进行交互时,
ajax代码:

$.ajax({
                        url:'http://localhost:8088/login/dologin',
                        type:'POST',
                        data:{
                            number:data.field.number,
                            password:data.field.password
                        },
                        success: function (da) {
                            if (da.code==0){
                                window.location.href = "index.html";
                            }else {
                                layer.msg(da.msg);
                            }

后端controller:

  @RequestMapping(value = "/dologin",method = RequestMethod.POST)
    @CrossOrigin(allowCredentials="true")
    public MSUserResult<Boolean> dologin(LoginVo loginVo, HttpServletResponse response){
        return msUserService.login(loginVo,response);
    }

service层:

public MSUserResult<Boolean> login(LoginVo loginVo, HttpServletResponse response) {
        MSUser user = getUserByNumber(loginVo.getNumber());
        if (user==null){
            return MSUserResult.error(CodeMsg.USER_NOT_EXIST);
        }
        String password = Md5Utils.inputpassToDBpass(loginVo.getPassword());
        if (!password.equals(user.getPassword())){
            return MSUserResult.error(CodeMsg.PASSWORD_ERROR);
        }
        String token = UUIDUtil.uuid();
        refreshCookie(response,token,user);
        return SRTUserResult.success(true);
    }

    private void refreshCookie(HttpServletResponse response, String token, MSUser user) {
        redisService.set(MSUserKey.getkeyByToken,token,user);
        Cookie cookie = new Cookie(COOKIE_NAME,token);
        cookie.setMaxAge(MSUserKey.getkeyByToken.expireSeconds());
        cookie.setPath("/");
        response.addCookie(cookie);
    }

我的cookie在redis中存好了,也返回到了前端页面
在dologin中返回cookie
但是在另一个页面通过ajax请求,在request header中却没有cookie
图片描述这个该怎么解决

写回答

1回答

若鱼1919

2019-04-22

端口不一样存在跨域问题,服务端接口允许跨域就可以

0
3
weixin_慕少5105451
是我自己吧前端ajax的xhrFields:{ withCredentials:true },写成了xhrFileds:{ withCredentials:true },
2019-04-22
共3条回复

Java秒杀系统方案优化 掌握海量访问通用解决方案

各种缓存/JSR303参数检

2695 学习 · 941 问题

查看课程