js无法获取cookie

clipboard.png

用FF查看是有JESSIONID这个cookie的但是为什么就是拿不到呢


    $('.signin').on('click', function (e) {
        // 阻止默认事件, 因为不阻止的话,表单就会直接提交,页面会重新加载,后缀的js代码就无法执行了
        e.preventDefault()
        var name = $('#uName').val() // 用户名
        var pass = $('#uPwd').val() // 密码
        // 判断 用户名 或者 密码 是否为空
        if (!name.trim() || !pass.trim()) {
            // 如果 用户名 或者 密码 为空的话,则给用户一个提示,并结束当前方法的执行
            return window.alert('请输入用户名或者密码!')
        }
        // 发ajax请求,要对着接口文档去发请求
        var options = { // jquery的ajax方法的参数
            url: '/ranking-web-admin/admin/admUser/login',
            type: 'post',
            dataType: 'json',
            data: {
                uName: name,
                uPwd: pass
            },
            success: function (data) {
                // 判断是否登陆成功!
                if (data.status === 200) {
        
                  **console.log($.cookie());**
                    
                    // 跳转到首页
                    window.location.href = '../main.html'
                } else {
                    $("#error-msg").html(data.info);
                }
            },
            error: function () {
                // 状态码404,会进行error执行
                window.alert('登陆失败!')
            }
        }
        $.ajax(options)
    })
})

https://segmentfault.com/q/10...
关于httpOnly在这个问题中解决了
已经关闭了这个属性

阅读 12.5k
6 个回答

最近又研究这个问题了,已经解决,首先是再ajax请求的时候允许携带cookie

xhrFields: {
withCredentials: true
},

然后在后端代码添加

response.setHeader("Access-Control-Allow-Credentials", "true");
 response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));

使用cookie的httpOnly属性,加上了这个属性的cookie字段,js是无法进行读写的

因为为了防止 XSS 攻击,JSESSIONID 这个 cookie 被设置为 HttpOnly,通过 JS 是不能获取 HttpOnly 的cookie.

参考:MDN HTTP Cookies

JSESSIONID 默认好像设置是httponly,也就是你前端无法通过javascript去获取这个cookie,后台可以获取

我记得js取cookie有个坑,得取到先做下去除所有空格的操作再用分号分割。不知道是不是这个引起的

。至少也要把js获取cookie的代码贴一下?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏