使用前后端分离开发的项目,前端的域名为a.com
, 后端的接口api为b.com
,a.com
下有cookie信息,在向b.com
发送请求时,是否有办法使b.com
读取到a.com
里面的cookie。[注:后端使用java开发]
使用前后端分离开发的项目,前端的域名为a.com
, 后端的接口api为b.com
,a.com
下有cookie信息,在向b.com
发送请求时,是否有办法使b.com
读取到a.com
里面的cookie。[注:后端使用java开发]
前后端分离,最应该用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已经有固定的要求,则你只能想办法适应。
我不太清楚你们的前后端分离是个怎么分离法,是否有前端server比如node?如果有node请求可以在node转发,如果没有node你的a.com
又是打到什么服务器上的?
token的方案可行,但是我不太建议在前端操作cookie,我觉得最好的方案是做反向代理,比如加层ng把a.com/api/xxx
代理到b.com
上
10 回答11.2k 阅读
15 回答8.4k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
8 回答6.3k 阅读
2 回答2.7k 阅读✓ 已解决
b.com没有办法直接获取到a.com的Cookie
不过可以在请求时附上,当然最好是用token