为什么设置了跨域和withCredentials后,document.cookie仍为空?

后端发的http报文,跨域允许了,cookie也设置了,也允许客户端访问cookie了
image.png

但是客户端用document.cookie访问cookie却是空,第二行是打印document.cookie的
image.png

 http.post("/login",this.loginForm)
       .then(response=>
        {
          if(response.data.status === "true")
          {
            console.log(document.cookie)
         
          }
          else{
            alert("用户名或密码错误,请重试")
          }
        }
        )
        .catch(error=>{
          alert("网络异常,请重试")
        }
      )

我的withCredentials也设置为true了,还是没用
image.png

我主要想拿到设置的SessionId,发http请求时Cookie:SessionId=dawda,
如果SessionId在服务器上,就是登录状态,可是又拿不到Cookie,浏览器也不会在登录后自动把Cookie发给服务器获取资源
image.png

怎么办?

阅读 1.1k
1 个回答
  1. withCredentials 是你发起请求的时候带上 cookie,不影响你检查 cookie
  2. 服务器设置 cookie 的时候可以设置 httpOnly,这个时候你用 js 就获取不到
  3. 你应该用 Devtools 检查 cookie
  4. 如果你确认 cookie 已经设置,直接 withCredentials 就足够了,http 本身就会带上 cookie,不需要你手动操作
  5. 如果你们后端要求 sessionId 不走 cookie,就不要用 cookie,直接在 body 里返回
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏