前端js与服务器联调出现的sessionId变更的问题

场景:前端搭建本地服务器,访问我的本地服务器接口 进行联调;

服务器代码:

@RequestMapping(value = "/login", method = RequestMethod.POST)
@ResponseBody
public CSResponse login(HttpServletRequest request, @RequestBody LoginRequest loginBean) {
    String workId = loginBean.getUserNum();
    String password = loginBean.getPassword();
    if (StringUtils.isBlank(workId) || StringUtils.isBlank(password)) {
        //用户名或密码为空
        throw new ErrorCodeException(ErrorEnum.CONFIRM_PASSWORD_WRONG);
    }
    UserEntity user = userService.login(workId, password);
    if (null != user) {
        HttpSession session = request.getSession();
        session.setAttribute(CSContents.USER_SESSION, user);
        UserModelVO userModelVO = UserModelConverter.initUserModelIVOValues(user);
        CSResponse loginResponse = new CSResponse();
        loginResponse.setDetailInfo(userModelVO);
        return loginResponse;
    } else {
        throw new ErrorCodeException(ErrorEnum.USER_NOT_EXITS);
    }
}
/**
 * 用户获取接口
 *
 * @param request
 * @return
 */
@RequestMapping(value = "/getUserSession", method = RequestMethod.GET)
@ResponseBody
public CSResponse getUserSession(HttpServletRequest request) {
    UserEntity user = (UserEntity) request.getSession().getAttribute(CSContents.USER_SESSION);
    CSResponse loginResponse = new CSResponse();
    if (null != user) {
        UserModelVO userModelVO = UserModelConverter.initUserModelIVOValues(user);
        loginResponse.setDetailInfo(userModelVO);
        return loginResponse;
    } else {
        return loginResponse;
    }
}
前端调用getUserSession接口刷新后获取不到session里面的值,经过debug发现session的ID发生变更;

为了排除原因,在一台服务器上进行操作,前端将代码长传到仓库对应的路径,结果发现sessionID没有发生变更,由此可见是由于跨域请求出现的问题;

解决方案:前端加上一下代码片段(crossDomain:true 属性):

$.ajax({
    type: (!_method ? "post" : _method),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    url: _url,
    async: true,
    crossDomain: true,
    data: JSON.stringify(_data),
    success: function (data) {
        if (data.code == 0) {
            _callback(data);
        } else {
            alert(data.desc);
        }
    }
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值