如何跨域获取cookie?

使用前后端分离开发的项目,前端的域名为a.com, 后端的接口api为b.com,
a.com下有cookie信息,在向b.com发送请求时,是否有办法使b.com读取到a.com里面的cookie。[注:后端使用java开发]

阅读 22.8k
4 个回答

b.com没有办法直接获取到a.com的Cookie

不过可以在请求时附上,当然最好是用token

前后端分离,最应该用token来交互,而不是用cookie。当然是可以取得cookie的。所有的cookie 都在头里面,有个Set-Cookie的字段,读取这个头就可以了。

Token是令牌。HTTP是无状态的,Cookie是记录HTTP状态的一种手段。浏览器会通过Set-Cookie字段获取Cookie。而Token是通过oauth认证后得到的令牌。

其实核心是b.com要获取客户端关于a.com的的一些状态信息,基于这样的核心需求,其实有很多方案:
因为请求是访问a.com后发出的,所以a.com的页面读取cookie是不跨域的,然后把读取到的信息采用某种机制传递给b.com即可。

这里很多种方案在于所谓的某种机制,直接在请求中采用请求附加参数的形式是一种方案,对信息进行某种处理生成所谓的Token也是一种方案。

这些方案的确定需要你在设计a.com与b.com时进行定义与实现。如果b.com已经有固定的要求,则你只能想办法适应。

  1. 我不太清楚你们的前后端分离是个怎么分离法,是否有前端server比如node?如果有node请求可以在node转发,如果没有node你的a.com又是打到什么服务器上的?

  2. token的方案可行,但是我不太建议在前端操作cookie,我觉得最好的方案是做反向代理,比如加层ng把a.com/api/xxx代理到b.com

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