問題タブ [http-status-codes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
redirect - 非SEOスプーフィング防止外部リンクリダイレクト:ステータスコード?
さまざまなHTTPリダイレクトステータスコードのメリットに関するいくつかのドキュメントを読みましたが、それらはすべて非常にSEO中心です。問題のサイトのセクションが公開されていないため、検索エンジンが考慮されないという問題が発生しました。
ただし、特にアクセシビリティの理由から、当社のWebサイトは可能な限り正確でメタデータに役立つものである必要があります。
現在、私たちのアプリケーションは、サードパーティによって提供された外部リンクを取得し、免責事項を含むなりすまし防止ページを介してそれらをルーティングします。このリダイレクタページは、特定のコンステレーションでAjax呼び出しを介して効果的に埋め込むこともできるため、リファラーからクエリパラメータを削除する必要もあります(プライバシーの目的で、ターゲットサイトには、ユーザーが以前に表示していた内部ページを見つけるビジネスはありません)。 。
これを行うために、確認ボタンはサーバー側スクリプトをトリガーし、サーバー側スクリプトは(ユーザーのページを開くだけでなく)リダイレクトします。
なりすまし防止の免責事項ページがリダイレクトをトリガーする理由については、これだけです。
質問は:
使用するステータスコードに効果的な違いはありますか?非一般的なブラウザ(スクリーンリーダーなど)は気にしますか?もしそうなら、そのようなリダイレクトのベストプラクティスは何ですか?あなたがそうするなら、最も意味的に健全ですか?それらはすべて私にはさまざまな程度の不誠実に見えます。
私は302を考えていますが、ページをブックマークしようとしても意味がないので(crsfトークンで保護されています)、301でも害はないのではないでしょうか。ですから、どちらか一方を好む理由があるのではないかと思います。
ajax - HTTP 304 を解決 - GWT 経由で行われた AJAX 呼び出しで変更されていません
サーバーをTomcatとして、GWTで作成されたアプリケーションを使用しています。プロジェクトは正常に実行されますが、サーバーが再起動される場合があります。そのような時点で、以下のコードによって行われた ajax 呼び出しは、ステータス コード 304 で空白のテキストを返します。
通常、この応答テキスト内でサーバーから何らかのデータが返されます。応答自体が空白の場合、どうすればデータを取得できますか?
asp.net - Application_Error の Server.Transfer("error_404.aspx") が空白のページを返す
global.asx の Application_Error サブで HttpExceptions を探します。
このコードをステップ実行して、Server.Transfer("error_404.aspx") と error_404.aspx の Page_Load にヒットすることを確認できますが、表示されるのは空白のページだけです。
http-status-code-404 - HTTP 404は、ページコンテンツの範囲外のページ番号に適していますか?
主にコンテンツ(記事、データ要素など)のページリストを表示しているサイトがあり、ユーザーが利用可能なリスト範囲外に移動した場合(たとえば、手動で編集されたURL)にHTTP404を返すことについて疑問に思っています。
一部のサイトは「結果なし/ページ番号が範囲外です」と表示するだけで、一部のサイトはさらにHTTP404ステータスを返します。
それについてどう思いますか、そしてその理由は何ですか?
アップデート
それは、API応答ではありません。この質問は、特にメインエリアにリスト/テーブルを表示するユーザー閲覧ページに関するものです。
アップデート
境界線の例:表示されているリストのデータがまだ存在しないため、最初のページは範囲外のページです。
404を表示する必要がありますか?検索結果がどこにあるかは気になりませんが、ページングされたリスト/データテーブルをわかりやすく表示するのは難しいようです。
例:Stack Overflowの実行の初日で、まだ質問が存在しない場合、ホームページにアクセスすると、404または200に「質問はまだありません」というメッセージが表示されますか?
php - Zend Framework REST サービスの HTTP ステータス コードの問題
Zend フレームワークで REST サービスを作成しようとしています。私はzendサーバーを使用しています。
これが私のコードです:
HTTP 応答は適切なヘッダーと JSON データを返しますが、JSON データの下に apache エラー ドキュメントがあります。追加されたエラー ドキュメントを削除する唯一の方法は、httpd.conf ファイルに次を追加することです。
しかし、これを行う「正しい」方法は何ですか?
android - Android:HttpClientリクエストのステータスコードを取得する方法
ファイルをダウンロードしたいのですが、応答ステータスコードを確認する必要があります(つまりHTTP /1.1 200 OK
)。これは私のコードの一部です:
応答のステータスコードを取得するにはどうすればよいですか?
php - jQuery Ajax リクエストがエラーとステータス 0 を返す
この疑似クラスを使用して、サーバーへの Ajax リクエストを作成します。
ロードされる PHP は次のとおりです。
新しいオブジェクトをインスタンス化し、それを使用してリクエストをロードすると、常にエラーが返され、ステータス コードは 0 になります。サーバーは XML ドキュメントを正しく生成します。正しい 200 コードを取得できないのはなぜですか?
.net - System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse 要求が HTTP ステータス 404 で失敗しました
実稼働 Web アプリにいくつかの機能強化を加えようとしています。WinXP IIS 5.1 開発マシンでかなりの単体テストを行った後、ローカルホストですべてが機能するので、開発用 PC で Visual Studio 2008 PUBLISH ダイアログを使用して、次のプロジェクトをステージング サーバーにプッシュしました。
- プライマリ Web アプリ
- 「プライマリ」Web サービス(ホームページがこの WS を呼び出そうとします)
- 「セカンダリ」Web サービス (ホームページはこの WS を呼び出さないため、まだ問題ではありません)
ブラウザにこれを入力して Web アプリのホームページを参照しようとすると、次のように表示されます: myUglyURL
バージョン情報: Microsoft .NET Framework バージョン:2.0.50727.3607; ASP.NET バージョン:2.0.50727.3082
対応するソースコードの一部を次に示します。
ステージング サーバーで間違った設定をしたのではないかと思います。ステージング サーバーは、IIS 6.0 を実行する Win Server 2003 ServicePack 2 です。MOJITO というステージング サーバーでプライマリ サイトと 2 つの Web サービスを公開したとき、D ドライブにそれぞれの物理ディレクトリを作成しました。次に、INETMGR を使用して、次の仮想ディレクトリを構成しました。
- zVersion2
- zVersion2wsSQL
- zVersion2ws緊急事態
上記のすべては、私がセットアップしてzVersion2aspNet20という名前の新しいアプリケーション プールを使用するように構成されています。このマシン MOJITO の既定の Web サイトは、ASP.NET 1.1 を使用するように構成されており、IP アドレスは(All Unassigned)に設定されています。後者の 2 つの Web サービスの製品版は、MOJITO マシンで実行されます (それぞれ ZipeeService と EmergencyService という名前です)。
上記の Web サービスのステージング バージョン (それぞれ zVersion2wsSQL および zVersion2wsEmergency という名前) は、同じ IP アドレスを持つ同じ Web サーバー上に共存できますか?
zVersion2wsSQL Web サービスを個別に (INETMGR を右クリックして [参照] をクリックして) テストすると、次のスニペットのように期待どおりに動作する (つまり、Web サービスのすべてのメソッドを表示する) ことに注意してください。
- GetMessageByType MessageName="Get_x0020_Message_x0020_By_x0020_Type"
この Web メソッドをクリックしてテストすると、[テスト] ダイアログが表示されます (単純なデータ型を取り、ローカルホスト (つまり MOJITO) で呼び出しているため):
情報が多すぎたのでやめますが、このリクエストが「見つからない」という結果になる理由が理解できないので、誰かが私を助けてくれることを願っています. ありがとう。
http - ログインページにリダイレクトするときの正しい HTTP ステータスコードは?
ユーザーがログインしておらず、ログインが必要なページにアクセスしようとした場合、ログイン ページへのリダイレクトの正しい HTTP ステータス コードは何ですか?
W3C によって設定された 3xx 応答コード のいずれも要件に適合しないように思われるため、質問しています。
10.3.1 300 の複数の選択肢
要求されたリソースは、それぞれが独自の特定の場所を持つ一連の表現のいずれかに対応し、エージェント駆動のネゴシエーション情報 (セクション 12) が提供されるため、ユーザー (またはユーザーエージェント) は優先表現を選択し、その表現をリダイレクトできます。その場所にリクエストします。
HEAD 要求でない限り、応答には、ユーザーまたはユーザー エージェントが最も適切なものを選択できる、リソースの特性と場所のリストを含むエンティティを含める必要があります。エンティティ形式は、Content-Type ヘッダー フィールドで指定されたメディア タイプによって指定されます。フォーマットと機能に応じて
ユーザー エージェントは、最も適切な選択肢の選択を自動的に実行することができます (MAY)。ただし、この仕様では、そのような自動選択の基準は定義されていません。
サーバーが表現の好ましい選択肢を持っている場合、その表現の特定の URI を Location フィールドに含める必要があります。ユーザー エージェントは、自動リダイレクトに Location フィールドの値を使用してもよい[MAY]。特に明記しない限り、この応答はキャッシュ可能です。
10.3.2 301 恒久的に移動
要求されたリソースには新しい永続的な URI が割り当てられており、このリソースへの今後の参照では、返された URI のいずれかを使用する必要があります。リンク編集機能を持つクライアントは、可能であれば、Request-URI への参照をサーバーから返された 1 つ以上の新しい参照に自動的に再リンクする必要があります。特に明記しない限り、この応答はキャッシュ可能です。
新しい永続的な URI は、応答の Location フィールドで指定する必要があります。リクエスト メソッドが HEAD でない限り、レスポンスのエンティティには、新しい URI へのハイパーリンクを含む短いハイパーテキスト ノートを含める必要があります。
GET または HEAD 以外のリクエストへの応答として 301 ステータス コードを受信した場合、ユーザーが確認できない限り、ユーザー エージェントはリクエストを自動的にリダイレクトしてはなりません。これにより、リクエストが発行された条件が変更される可能性があるためです。
10.3.3 302 見つかりました
要求されたリソースは、一時的に別の URI に存在します。リダイレクションは時々変更される可能性があるため、クライアントは今後のリクエストに引き続き Request-URI を使用する必要があります。この応答は、Cache-Control または Expires ヘッダー フィールドで示されている場合にのみキャッシュ可能です。
一時的な URI は、応答の Location フィールドで指定する必要があります。リクエスト メソッドが HEAD でない限り、レスポンスのエンティティには、新しい URI へのハイパーリンクを含む短いハイパーテキスト ノートを含める必要があります。
GET または HEAD 以外のリクエストに応答して 302 ステータス コードを受信した場合、ユーザーが確認できない限り、ユーザー エージェントはリクエストを自動的にリダイレクトしてはなりません。これにより、リクエストが発行された条件が変更される可能性があるためです。
元のリクエスト メソッドに関係なく、Location フィールド値に対して GET を実行する 303 レスポンスでした。ステータス コード 303 および 307 は、クライアントに期待される反応の種類を明確に明らかにしたいサーバー用に追加されました。
10.3.4 303 その他を参照
リクエストへのレスポンスは別の URI で見つけることができ、そのリソースで GET メソッドを使用して取得する必要があります。このメソッドは主に、POST でアクティブ化されたスクリプトの出力がユーザー エージェントを選択したリソースにリダイレクトできるようにするために存在します。新しい URI は、最初に要求されたリソースの代替参照ではありません。303 応答はキャッシュしてはなりませんが、2 番目の (リダイレクトされた) 要求に対する応答はキャッシュ可能かもしれません。
応答の Location フィールドで別の URI を指定する必要があります (SHOULD)。リクエスト メソッドが HEAD でない限り、レスポンスのエンティティには、新しい URI へのハイパーリンクを含む短いハイパーテキスト ノートを含める必要があります。
10.3.5 304 未修正
クライアントが条件付き GET リクエストを実行し、アクセスが許可されているが、ドキュメントが変更されていない場合、サーバーはこのステータス コードで応答する必要があります。304 応答はメッセージ本文を含んではならないため、常にヘッダー フィールドの後の最初の空行で終了します。
応答には、次のヘッダー フィールドを含める必要があります。
時計のないオリジンサーバーはこれらのルールに従い、プロキシとクライアントは独自の日付を追加せずに受信した応答に追加します ([RFC 2068]、セクション 14.19 で既に指定されているように)、キャッシュは正しく動作します。
セクション 13.3.3)、応答には他のエンティティ ヘッダーを含めないでください。それ以外の場合 (つまり、条件付き GET で弱いバリデータが使用された場合)、応答に他のエンティティ ヘッダーを含めてはなりません。これにより、キャッシュされたエンティティ本体と更新されたヘッダーの間の不一致が防止されます。
304 応答がエンティティが現在キャッシュされていないことを示している場合、キャッシュは応答を無視し、条件なしで要求を繰り返さなければなりません (MUST)。
キャッシュが受信した 304 応答を使用してキャッシュ エントリを更新する場合、キャッシュはエントリを更新して、応答で指定された新しいフィールド値を反映する必要があります。
10.3.6 305 プロキシを使用
要求されたリソースには、Location フィールドで指定されたプロキシを介してアクセスする必要があります。Location フィールドは、プロキシの URI を示します。受信者は、プロキシ経由でこの 1 つの要求を繰り返すことが期待されます。305 応答は、オリジン サーバーによってのみ生成されなければなりません。
10.3.7 306 (未使用)
306 ステータス コードは仕様の以前のバージョンで使用されていましたが、現在は使用されておらず、コードは予約されています。
10.3.8 307 一時リダイレクト
要求されたリソースは、一時的に別の URI に存在します。リダイレクトは場合によって変更される可能性があるため、クライアントは今後のリクエストに引き続き Request-URI を使用する必要があります。この応答は、Cache-Control または Expires ヘッダー フィールドで示されている場合にのみキャッシュ可能です。
一時的な URI は、応答の Location フィールドで指定する必要があります。HTTP/1.1 より前の多くのユーザー エージェントは 307 ステータスを理解していないため、リクエスト メソッドが HEAD でない限り、レスポンスのエンティティには、新しい URI へのハイパーリンクを含む短いハイパーテキスト メモを含める必要があります。したがって、メモには、ユーザーが新しい URI で元の要求を繰り返すために必要な情報を含める必要があります。
GET または HEAD 以外のリクエストに応答して 307 ステータス コードを受信した場合、ユーザーが確認できない限り、ユーザー エージェントはリクエストを自動的にリダイレクトしてはなりません。これにより、リクエストが発行された条件が変更される可能性があるためです。
正しい答えが見つかるまで、今のところ 302 を使用しています。
更新と結論:
HTTP 302 は、クライアント/ブラウザーとの互換性が最も優れていることが知られているため、より優れています。
php - HTTP 414「リクエスト URI が長すぎます」エラーを解決するにはどうすればよいですか?
PHP Web アプリを開発しました。一度に複数の問題を更新するオプションをユーザーに提供しています。その際、ユーザーがこのエラーに遭遇することがあります。Apache で URL の長さを増やす方法はありますか?