我正在用与rest api通信的角度构建这个web应用程序。有时,当前端通过get到某个url请求一些数据时,服务器不会立即返回200ok,而是抛出301响应。chrome正确地处理这个301,并对响应头中返回的url进行后续请求。以下是chrome中抛出的一系列请求的屏幕截图:
注意在每次实际请求之前都会有一个飞行前请求,因为我在和cors一起工作。
现在,当我在firefox中尝试这个(我相信edge可能也显示了同样的问题),这就是我在network inspect中得到的:
浏览器甚至不会尝试获取301响应中返回的资源,因此实际数据永远不会到达前端,我的表单看起来是空的。
要添加更多信息,后端在django上运行,此测试是在开发服务器上完成的。
下面是一个片段,展示了Angular是如何执行此请求的(我认为这非常简单):
getUser(id: number): Promise<User> {
return this.http.get('/users/'+id)
.toPromise()
.then(data => data as User )
.catch(this.handleError);
}
出于某种原因,当我开始这个项目的时候,我决定用承诺来代替观察。不确定这是否相关。