Angular 5 无法在 Firefox 中正确处理 301 响应

Angular 5 not handling 301 responses properly in firefox

我正在 Angular 中构建与 REST api 通信的 Web 应用程序。有时,当前端通过 GET 向某个 url 请求某些数据时,服务器不会立即 return 200 OK 而是抛出 301 响应。 Chrome 正确处理此 301 并在响应 headers 中向 url return 发出后续请求。这是 Chrome 中抛出的请求序列的屏幕截图:

请注意,在每个实际请求之前都有一个预检请求,因为我正在使用 CORS。

现在,当我在 Firefox 中尝试此操作时(我相信 Edge 可能会出现同样的问题),这就是我在网络检查中得到的结果:

浏览器甚至不会尝试获取在 301 响应中 returned 的资源,因此实际数据永远不会到达前端并且我的表单显示为空。

要添加更多信息,后端是 运行 Django 并且此测试是在开发服务器上完成的。

这里有一个片段显示了 Angular 如何执行此请求(我认为非常简单):

getUser(id: number): Promise<User> {
    return this.http.get('/users/'+id)
        .toPromise()
        .then(data => data as User )
        .catch(this.handleError);
}

出于某种原因,当我开始这个项目时,我决定使用 promises 而不是 observables。不确定这是否相关。

为了不让这个看似悬而未决的问题,以防万一有人被这个愚蠢的问题绊倒,这就是发生的事情:

我的应用程序的实际 URLs 包含一个尾部斜杠 (/users/),而我请求它们时没有斜杠 (/user)。所以我的后端会通过重定向 (301) 响应到正确的 URL。看起来,虽然 Chrome 会处理这个重定向,但 Firefox 不会。就这么简单。

底线是:正确书写您的 URL。