代码之家  ›  专栏  ›  技术社区  ›  Kilian Perdomo Curbelo

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

  •  1
  • Kilian Perdomo Curbelo  · 技术社区  · 8 年前

    我正在用与rest api通信的角度构建这个web应用程序。有时,当前端通过get到某个url请求一些数据时,服务器不会立即返回200ok,而是抛出301响应。chrome正确地处理这个301,并对响应头中返回的url进行后续请求。以下是chrome中抛出的一系列请求的屏幕截图:

    enter image description here

    注意在每次实际请求之前都会有一个飞行前请求,因为我在和cors一起工作。

    现在,当我在firefox中尝试这个(我相信edge可能也显示了同样的问题),这就是我在network inspect中得到的:

    enter image description here

    浏览器甚至不会尝试获取301响应中返回的资源,因此实际数据永远不会到达前端,我的表单看起来是空的。

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

    下面是一个片段,展示了Angular是如何执行此请求的(我认为这非常简单):

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

    出于某种原因,当我开始这个项目的时候,我决定用承诺来代替观察。不确定这是否相关。

    1 回复  |  直到 8 年前
        1
  •  0
  •   Kilian Perdomo Curbelo    7 年前

    为了不让这件事看起来悬而未决,万一有人因为这个愚蠢的问题而绊倒了,事情就是这样:

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

    底线是:适当地写你的网址。