0

在我遇到这个问题之前,我认为一切都应该顺利进行。但现在我面临一个我以前从未想过的问题。

我有两台服务器,一台前端和一台后端。这两个有不同的地址;192.168.2.10:8080localhost:4200。后端是用 Java+Spring 实现的,而前端是 Angualr2(这并不重要,但还没有关系)。当然,我可以很容易地从 localhost 为它们提供服务,这只是为了测试。事实上,如果我从 localhost 为它们提供服务,我将不会遇到我将要描述的问题。

我的后端启用了 CSRF,这意味着对于每个 POST 请求(和其他一些方法),它需要一个 cookie 和一个 header 并相互匹配(XSRF-TOKENcookie 和X-XSRF-TOKENheader)。问题是当我对我的后端服务器进行 Ajax 调用时,X-XSRF-TOKEN没有正确填充。

当我在网络选项卡中打开 POST 请求时,我可以看到 cookie 已按原样发送到后端服务器。但是,请求没有X-XSRF-TOKEN附带标题。

是的,我已将该withCredentials属性设置为 true。正如我所说,如果两台服务器共享相同的 IP 地址,一切正常。我认为问题在于,由于 cookie 设置为不同的地址,因此 XMLHttpRequest 对象无法访问它以将其包含为标头,这对我来说是个遗憾。

那么,是否可以通过启用 CSRF 且不使用代理的完全不同 IP 地址的后端为前端提供服务?

4

0 回答 0