Angular(4)CSRF同一台计算机上的不同端口

Odd*_*eck 1 spring angular

我有一个小型的 Spring Boot 应用程序,它公开了一个带有两种方法“/upload”(POST)和“/show”(GET)的 REST 服务

当我在计算机上运行 Angular 2 应用程序时,http://computer.domain.com:4200,并在同一台计算机上的不同端口 http://computer.domain.com 上运行 Spring Boot Rest-service : 8080,角度 2 的 CSRF 部分不想发送带有标头的 XSRF 令牌。

如果我在 spring boot WAR 中部署 Angular GUI,以便可以通过http://computer.domain.com:8080访问 REST 和 GUI,那么与CSRF 相关的所有内容都可以工作。

我认为 Cookie 和 Angular 在从哪个端口发送时是“不可知的”,只要它源自同一服务器即可。

我是否缺少一些使角度发送 CSRF 标头的配置?

Nic*_*rot 5

Cookie/浏览器可能与端口无关。请参阅此问题和相关答案。

常见的设置是配置 angular-cli 来设置代理。

例如,如果您的休息端点以 开头api,您应该创建一个proxy.conf.json

{
  "/api": {
    "target": "http://computer.domain.com:8080",
    "secure": false
  }
}
Run Code Online (Sandbox Code Playgroud)

然后将您的package.json start脚本更新为:

"start": "ng serve --proxy-config proxy.conf.json",
Run Code Online (Sandbox Code Playgroud)

前端应该进行 http 调用http://computer.domain.com:4200/api...

希望能帮助到你