为了保护应用免受CSRF攻击,我们从服务器端设置了一个名为 XSRF-TOKEN 的cookie。因此,从客户端代码我们可以设置cookie并发送到服务器,但是为了验证服务器端的CSRF,我们需要在触发'POST'服务调用时发送头。根据angular文档自动$ http设置标题 X-XSRF-TOKEN 通过读取cookie(请参考link),但Javascript代码无法读取cookie虽然我们已部署了我们的应用程序在同一个域上。 服务器端cookie生成代码和服务部署详细信息如下,
final Cookie newCookie = new Cookie(
"XSRF-TOKEN",
csrfValue);
newCookie.setPath("/");
httpResponse.addCookie(newCookie);
UI部署在8080端口,服务部署在同一个VM内的端口8084
答案 0 :(得分:0)
端口8080和8084是不同的来源,因此您无法从另一个读取cookie,就像您无法访问运行在您网站上的任何其他网站的cookie一样。
该服务如何验证用户?如果它是基于令牌的,并且令牌作为请求头发送,您甚至不需要进一步保护csrf。