18

我一直在使用 jquery 来尝试从 API 中提取数据。但是我收到 504 错误。即使我使用邮递员来测试数据,也会发生这种情况。谁能建议我需要做些什么来解决这个问题?

4

3 回答 3

14

我最近在我的一个应用程序中遇到了这个问题,该应用程序正在对其 Firebase 数据库进行雄心勃勃的调用 - 它正在获取一个非常大的记录,检索时间超过 60 秒(默认超时)。

对于那些遇到此错误且有权访问其应用程序/站点的托管环境(通过NGINX代理)的用户,可以通过延长 API 请求的超时时间来解决此问题。

在您的/etc/nginx/sites-available/default/etc/nginx/nginx.conf添加以下变量:

proxy_connect_timeout       240;
proxy_send_timeout          240;
proxy_read_timeout          240;
send_timeout                240;

运行sudo nginx -t检查语法,然后sudo service nginx restart.

这应该是 NGINX 超时 API 请求之前的有效时间的四倍(默认为 60 秒,我们的新超时为 240 秒)。

希望这可以帮助!

于 2018-10-03T01:06:27.540 回答
8

无能为力。

您正在向服务器发送请求。此特定请求失败,因为服务器向代理发送请求,并收到超时错误。您的服务器将此作为状态 504 报告给您。

修复它的唯一方法是修复代理(使其及时响应),或者将服务器更改为不依赖该代理。两者都在您的区域之外。

您无法防止此类错误。你可以做的是找出当这样的问题发生时应该有什么样的用户体验,并实施它。顺便提一句。如果您收到 504 错误,那么您还应该预料到超时错误。假设您向服务器发出 60 秒超时的请求,而您的服务器向代理发出 60 秒超时的请求。因为两个超时时间相同,有时您的服务器会收到代理超时并将其发送给您(状态 504),但有时您对服务器的请求会在此之前超时,并且您会收到超时错误。

于 2017-05-07T14:20:03.787 回答
-1

解决此问题的一种方法是,在浏览器中将代理设置更改为“NO PROXY”

它适用于Firefox浏览器,其他我不知道。

请按照以下步骤操作: 1. 转到偏好设置(右上角 3 行,在下拉菜单中搜索)

  1. 搜索代理 (Ctrl+F)

  2. 进入设置里面

  3. 在“配置代理访问 Internet ”下方的选择按钮中选择“NO PROXY ”

  4. 刷新网页。

于 2020-02-19T12:10:29.230 回答