19

RFCは、クライアントが応答を永続的にキャッシュする必要があることを示唆しているようです: http ://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

10.3.2301恒久的に移動

要求されたリソースには新しい永続的なURIが割り当てられており、このリソースへの今後の参照では、返されたURIの1つを使用する必要があります。リンク編集機能を備えたクライアントは、可能であれば、Request-URIへの参照をサーバーから返された1つ以上の新しい参照に自動的に再リンクする必要があります。特に明記されていない限り、この応答はキャッシュ可能です。

新しい永続的なURIは、応答のLocationフィールドで指定する必要があります。リクエストメソッドがHEADでない限り、レスポンスのエンティティには、新しいURIへのハイパーリンクを含む短いハイパーテキストメモが含まれている必要があります。

GETまたはHEAD以外の要求に応答して301ステータスコードを受信した場合、ユーザーが確認できない限り、ユーザーエージェントは要求を自動的にリダイレクトしてはなりません。これにより、要求が発行された条件が変わる可能性があります。

  Note: When automatically redirecting a POST request after
  receiving a 301 status code, some existing HTTP/1.0 user agents
  will erroneously change it into a GET request.

これらをどのように処理するかを説明している主要なブラウザの具体的なブラウザドキュメントを見つけるのに苦労しています。

Firefoxのソースコードを調べ始めましたが、すぐに迷子になりました。

次のシナリオは、(もしあれば)どのブラウザに当てはまりますか?また、FirefoxまたはIEのいずれかについて、同じくらい多くのことを述べている決定的なドキュメントがありますか?:

初めて:

  • 1.1:ユーザーがサイトAへのリンクを入力するか、サイトAに向けられたリンクをクリックします
  • 1.2:ブラウザはサイトAでリンクを初めて解釈し、キャッシュはありません。GETをサイトAに送信します。
  • 1.2:サイトAはサイトBへの301リダイレクトで応答します
  • 1.3:ブラウザはGETをサイトBに送信します。

その後の時間:

  • 2.2:ユーザーがサイトAに向けられたリンクをクリックする
  • 2.2:ブラウザは、過去の301リダイレクトにより、サイトAがサイトBになっていることを確認します。
  • 2.3:サイトAでリクエストを開始することなく、ブラウザはサイトBでGETを開始します。

  • 4

    2 に答える 2

    12

    私はいくつかのテストを実行し、いくつかのブラウザが301の結果をキャッシュすることを発見しました:

    301の結果をキャッシュし、将来、古いアドレスへの接続をスキップしますか?
    
      InternetExplorer7いいえ
      Firefox3.0いいえ
      Chrome4.0はい
      Opera 10.01 google.comの場合ははい、www.rnhart.netの場合はいいえ
    

    テスト方法

    次の2つの301の結果を使用してテストしました。

    • google.comは301をwww.google.comに返します
    • www.rnhart.netは301をrnhart.netに返します

    自分のコンピューターでプロキシサーバーを起動しました(すべてのフィルターをオフにしたProxomitron Naoko 4.2)。各ブラウザで、自分のコンピュータを指すようにプロキシ設定を設定しました。ブラウザのキャッシュをクリアしてから、古いアドレスに何度もアクセスし、プロキシサーバーのログウィンドウを調べて、ブラウザからのリクエストを確認しました。

    古いアドレスに初めてアクセスすると、プロキシログに古いアドレス要求、301応答、および新しいアドレス要求が表示されます。古いアドレスに再度アクセスすると、ログに同じ要求のセットが表示されるか(301がキャッシュされなかった)、新しいアドレス要求のみが表示されました(301がキャッシュされました)。

    アドレスボックスに古いアドレスを入力し、ブックマークから古いアドレスにアクセスし、ページ上のリンクから古いアドレスにアクセスすることをテストしました。アドレスへのアクセス方法に関係なく、各ブラウザは同じように機能しました。


    [同様のスーパーユーザーの質問を調査しているときにこの質問を見つけました:ブラウザは301リダイレクトに応答して保存されたブックマークのURLを変更しますか?]

    于 2010-06-12T06:21:49.413 に答える
    -1

    この回避策を使用できます:ユーザーに対して、検索エンジンに対してのみ
    リダイレクトを行います。サーバー側では、ユーザー エージェントを確認するだけです。ボットの場合は、リダイレクトを行います。それ以外の場合は、実行します。302301301302

    それは「黄金の方法」ではありませんが、うまく機能します

    于 2012-09-28T22:48:49.873 に答える