web-dev-qa-db-ja.com

HTTP 3xx Redirectステータスで応答する場合、応答本文はまだあるべきですか?

サービスがHTTPリクエストに「3xxリダイレクト」ステータスコード応答(および付随するLocationヘッダー)で応答している場合、応答とともに意味のある応答本文を送信する必要がありますか?

ユーザーエージェントがリダイレクトを適切に処理できない場合、リダイレクトターゲットへのリンクを提供するページが役立つかもしれないと想像できますが、これが起こる可能性があると仮定するのは現実的ですか?一方、空の応答本文のみを送信することは、トラフィックを少し節約する良い機会かもしれません...

アドバイスをいただければ幸いです。

6
MRA

実際に、関連する RFC 72 (またはその前身 RFC 2616 )で対処されている自分の質問に対する答えを見つけました。ステータスコードの説明「303 See Other」:

HEAD要求への応答を除き、303応答の表現には、Locationヘッダーフィールドで提供される同じURI参照へのハイパーリンクを持つ短いハイパーテキストノートを含める必要があります。

基本的に、3xxファミリのすべてのステータスコードに対して同じアドバイスが与えられます。

8
MRA

可能な限り多くのWebブラウザーをサポートするのは間違いなくイエスです。おそらく、誰かが使用しているその日に作られたWebブラウザーが1つあり、それはロケーションヘッダータグをサポートしていません。

Apacheサーバーでは、標準の301リダイレクトメッセージページに次のHTMLコードがあります。

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://www.website.com/">here</a>.</p>
</body></html>

出力は大きな文字で永続的に移動され、新しいページへのハイパーリンクとして「here」という単語が下に「ドキュメントはここに移動しました」と表示されます。

3
Mike

ターゲットページへのリンクの追加は、従来、更新ヘッダーを使用してユーザーをリダイレクトするページ内で使用されます。これは最適ではなく、ユーザーに透過的な従来の301リダイレクトとは異なります。 301リダイレクトの一部としてHTMLを提供した場合、HTMLはおそらく表示されません。また、リダイレクトの可能性がある場合、.htaccess RewriteRuleを使用する場合など、この機会は存在しません。

2
closetnoc

応答本文は必要ありませんが(通常はブラウザーでは無視されます)、リンクを維持している人がリソースURLが変更された理由を知るのに役立ちます。応答本文に説明を入れると、元のページにリンクした人がリンクを更新することを願っています。

2
Brent Washburne

AdBlockまたは他のプラグインが原因で、ブラウザでリダイレクトが自動的に発生しませんでした。通常、リダイレクトにはクリックするものがあるページが含まれているため、これは通常は問題ではありませんでした。ページが含まれていないリダイレクトサービスがいくつかあり、面倒でした。

ほとんどのユーザーはそのコンテンツを見ることはありませんが、役に立つ場合があります。

2