私はjqueryを使用して、APIからデータを取得しようとしています。ただし、504エラーが表示されます。 postmanを使用してデータをテストしている場合でも、これが発生します。誰も私がこれを回避するために必要なことを提案できますか?
何もありませんyoできます。
サーバーにリクエストを送信しています。サーバーがプロキシにリクエストを送信し、タイムアウトエラーが発生するため、この特定のリクエストは失敗します。サーバーはこれをステータス504として報告します。
修正する唯一の方法は、プロキシを修正する(タイムリーに応答する)か、そのプロキシに依存しないようにサーバーを変更することです。両方ともあなたの地域の外にあります。
このようなエラーを防ぐことはできません。あなたができることは、そのような問題が発生したときに、どのようなユーザーエクスペリエンスがあるべきかを見つけ、それを実装することです。ところで。 504エラーが発生した場合は、タイムアウトエラーも発生するはずです。 60秒のタイムアウトでリクエストをサーバーに送信し、サーバーが60秒のタイムアウトでプロキシにリクエストを送信するとします。両方のタイムアウトが同じであるため、サーバーがプロキシタイムアウトを受信して送信する場合がありますが(ステータス504)、サーバーへのリクエストがその直前にタイムアウトし、タイムアウトエラーが発生する場合があります。
私は最近、Firebase Databaseの野心的な呼び出しを行っていたアプリの1つでこの問題を経験しました-取得するのに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リクエストをタイムアウトするまでの時間が実質的に4倍になります(デフォルトは60秒、新しいタイムアウトは240秒です)。
詳細: Nginxを使用して504ゲートウェイのタイムアウトを修正する方法
お役に立てれば!