システムwiki

Internet Explorer 9:(可能)httpコード301のIEのバグ-永続的なリダイレクト

sunnysh 解決済 最終更新日:2020-08-30 13:31

こんにちは、URL書き換えモジュールを使用してIISでリダイレクトルールを作成しました.しかし、このルールを無効化/削除すると、他のブラウザーでは(期待どおり)機能しなくなりますが、IE(v9)では機能し続けます.私はいくつかのテストを行い、絞り込みました
httpコード301の問題-永続的なリダイレクトが使用されています.これは、web.configのredirectType="Permanent"に変換されます.これがFound(302)またはTemporary(307)に設定され、Permanent(301)に設定される前に無効化/削除された場合、IE(他のブラウザーと同様)
には、予想どおり404 Not Foundエラーが表示されます.これはWindows/IEのhttpハンドラーモジュールのバグのようです.言うまでもありませんが、問題の原因を突き止める前に、IEキャッシュをクリアしてみました.
他のブラウザが適切なhttp応答を受け取り、期待どおりに動作するため、IIS/URL書き換えは正常に動作しているようです.問題はIEにあるようです.IEが301の永続的なリダイレクトを受信すると、文字通りの意味でリダイレクトを永続的にキャッシュするようです.
IEがWebサーバーから最初の301を受信した後(たとえば、短いURLリダイレクトの場合)にルールを変更した場合、IEがサーバーへのhttpリクエストの作成に煩わされていないようです.IEを再起動した後でも-Windowsを再起動してみました
キャッシュの問題を排除するために!私はこれをFiddlerで確認しました-FF/Chromeはリダイレクト先のhttp 200の前にそれぞれの302、307、404、または更新された301コードを最初に取得しますが、IEは最初の部分をスキップして直接200を取得します!うーん……
:-\
誰かがこれを調べたり、この問題についての洞察を共有したりできますか?ありがとう!

返信リスト(回答:11)

1 #
sunnysh
まあ、それは「一般的なMSIE動作」ではないはずです.これは、正しくない動作だからです.とにかく、私はいくつかのテストをさらに行い、IE 8とIE 7でもこれを試しました(そうです、v7がまだどこかにインストールされていることを知って驚きました).これらのversionは両方とも動作しました
FF/Chromeのように正しく.
そのため、ここではこれをIE 9のバグと発音します.
2 #
RobertA

「成功しましたか」というより良い質問のようですが、<例>

「TIFをクリアする」にはさまざまな方法があります.これまでのところ、私が本当に信頼しているのは、2番目の管理者アカウントを使用して(またはコマンド専用モードで起動して)、ディレクトリ全体を削除することだけです.ユーザーが次にログオンしたときに再生成されます.

ところで、Content.IE5\index.datを開いている他のすべてのタスクを見つけて強制終了する場合は、自分のアカウントでそれを行うこともできます.例えば.そのためにProcExpを使用できます.

それ以外の場合は、ProcMonを実行して、キャッシュされたページをIEがどこで見つけているかを調べます.先に示したように、リダイレクトがまだindex.datにあり、「TIFをクリアする」ために使用している手順がすべて完了していない場合があります.
希望するかもしれません.

FYI

ロバートアルドウィンクル


応答2# ->にスキップ
4 #
sunnysh
提案のおかげでBob.私はこれらのオプションについて知っていましたが、すべてのTIFを削除するためにインターネットオプションUIに頼っていました.しかし、私はそれが何が使用されているのか、ほとんどの道具はそうではないことを知っています
使用中のファイルを削除できます.
そんなにProchounを使用して、IE 9がこの情報を入手していたところでは、キャプチャされたイベントで見つけることができませんでした.だから私は私のアカウントからログオフし、別の管理者としてログインし、すべてのコンテンツ、隠し&システムファイルを削除しました.
index.datファイルを含むcontent.ie5フォルダ.それから私は私のアカウントにログインし、すなわち短いURLを開きました、そしてそれがもう一度行った、それがそうでなければ私をリダイレクトしました.悪いIE 9!この情報を格納するのはどこですか?
バグはバグです-それが正しく行動するようにするためにキャッシュをクリアする必要はありません.私はあなたがたぶん9のTIFフォルダがここで問題ではないことを確認しようとしているだけであり、私のテストはかなり確認していることに気づきます
それがそうではないこと.
3 #
sunnysh
うーん...まあ、これはコンピュータを再起動した後でも動かないままです.また、ドメインと非ドメインのいくつかの異なるコンピューター上のIE 9でも発生します.追加情報:IE 8テストはServer 2008 R2で、IE 7テストはVistaで行われました.助けてくれてありがとう.
あなたの実験の結果を知りたいです.
5 #
sunnysh
@ A.User、DNSはそれと実際には何の関係もありません(IE 9がロイヤルでない限り) めちゃくちゃ-しかし私は本当にそれを疑っています)問題はドメイン名のの後の部分にあるので.助けてくれてありがとう2番目の最後の段落の最後の行であなたが言うことには少し同意しますが、IEには大きな問題があったと思います
IE 9コードベースを構成するために、その一部が書き直されました.おそらくこのプロセスで、一部のコードまたは依存関係が壊れ、これがIE 9に固有である理由を説明できる可能性があります.
問題は本当に簡単です.301パーマをセットアップしました.(/shortURL)が(/really/long/URL)を指すようにリダイレクトルール(およびBjp、そのSEO対応であるため301).すべてが期待どおりに機能します.(/shortURL)を(/another/really/long/URL)を指すように変更するとします.
これはIE 9が失敗する場所です.他のブラウザー(テストのIE 8およびIE 7を含む)は変更を反映し、Webサーバーからの更新されたhttp応答に基づいて「another」URLをポイントしますが、IE 9は引き続き 元の長いURL.以前にテストしたように、IE 9は何か変更があったかどうかWebサーバーに問い合わせるのではなく、どこかにキャッシュされている情報を使用するだけです.
これがもっと理にかなっているといいのですが、これがBAD/バギーであることがわかります!
6 #
dillyha

この動作を再現できます.これはIE9のバグです.簡潔でシンプル.もちろん、これは難しい方法です.

URLへのリクエストは、リクエストどおりに処理される必要があります.ブラウザ-どのブラウザでも、ユーザーまたは要求されたURLの作成者の意図を想定しないでください.ユーザーが実行した要求を処理し、任意の
要求されたドキュメントに記載されているように、ディレクティブとそれに応じたコンテンツを表示します.

これがブラウザの唯一の目的です.

7 #
dillyha

well、私はRFCの表現の意味にある議論があると思います.「常に「常に」のような予言があることを強調しているとは対照的に、「必ず」という言葉を重視することをお勧めします.
永続的だが石に彫られていません.それが定期的にキャッシュをフラッシュする目的であると思います.それは問題を頼みます:「作者が心の変化を持っているならば?」.私は2番目のIETFの意図を推測するのではなく、ブラウザのキャッシュを待っているつもりはありません.
潜在的に何百万ものクライアントを毎日何百万もの間にフラッシュされていたすべてのものが考慮されていません.

以前の行動と下位互換性の問題もあります.すべての主要ブラウザのすべてのversion、IE9を保存し、RFCが作成されたため、要求されたようにURLを処理してから、その中に含まれているディレクティブを尊重します.脇に、私はチェックしました
Netscape 3.0とのこの動作とそれはどのようにそれを期待しているかを振る舞いました.だから別の質問があるかもしれません:この行動の変化のために、それらが見えない、またはまったくないコンテンツを見ていない人の人数は何度も見られなかったのでしょうか.最低限、それはBCの侵入です モンスタープロポーションの
.さらに、特に初心者のユーザーには、実行可能でよく文書化された回避策は容易に入手できません.

「あなたのキャッシュをフラッシュするのを待つ」は、フィッティング救済策が難しいようです.

新しいIE9がどのようになっているかを見て、私たちが最後に聞いたことがないと思われます.私はそれが早期の採用者であるために尾の上に少し入るのにかかわらずかっこいいだったと思っていました.この場合はそうではありません.

私はまた、これに関するRFCへの厳密な遵守の議論を疑っています-意味論に関係なく、かなり恒久的なものになります.私はマイクロソフト「修正」を見ることはできません、おそらく修正、これが今まで使用された他のすべてのブラウザはおそらく
壊れた.

== SIGH==

現在は2つのことをしています./P>

応答7# ->にスキップ
8 #
sunnysh
ああ...素晴らしい議論!この興味深い新しい方向に進んでいただきありがとうございます.
ところで、私のポイントを繰り返してみましょう.これをバグと呼ぶのは、Content.IE5フォルダーのすべての非表示&systemcontentsを削除してキャッシュを手動で削除し、その後コンピューターを再起動した後でも、この動作が続くためです.何でもクリア
RAMにキャッシュされました.
また、私が以前に伝えようとしていたように、ほとんどの検索エンジンクローラーは、Webサーバーからhttp 301 Permanent Redirectresponseを受信しない限り、リダイレクト先URLのコンテンツにインデックスを付けないことがわかっています.これが私が使用している理由です.それ.
@dillyhammer:上記の両方の投稿であなたが言ったことすべてに同意します.
応答8# ->にスキップ
9 #
dillyha

私は、2年前に1年前に1年前にユニットテストをしました.それは301のリダイレクトされたサイトの内容を索引付けしてキャッシュした
302リダイレクトサイトの内容を無視しました.だから私はあなたの仮定が正しいと思います.SEO目的のための安全な側に確かに.

Content.ie5フォルダの問題は非常に面白いです.このフォルダは、windows 7-X64ボックスに9桁以上存在します.このキャッシングのバグでは、フォルダの内容と関係がないという私の感覚ですが、私は間違っている可能性があります.

私がしたことは、レジストリを3tiTemsto追加することです.その下:

HKEY_CURRENT_USER\SOFjpARE¥Microsoft¥Windows¥CurrentVersion¥インターネット設定

追加:

dnscacheeabled=>0x00000000(0)

dnscachetimeout=>0x00000000(0)

ServerInfoTimeout=>0x00000000(0)

再起動後も、これらの設定は問題に影響を及ぼさなかった.これは昨夜行われました.

今朝、キャッシュはそれ自身の合意のそれ自身をクリアしていました、そして、私が発信元の文書の301の場所を変更した場合に確かに再現するだろうほど、私が去っていた問題は、それが確実に再現されるので、それは確かに再現していました.

だから問題にはいくつかの寸法があり、それは私が見つけることができる場所では文書化されていません.私はまだこれがバグを考慮しています.私はまだこれをモンスターBCブレイクとして-文書化されていないものです-悪いことです.

私の頭を全体のままにするために私はいくつかの質問に答えられる必要があるでしょう.

このキャッシュはどこですか?好きです-まさにそれはどこにいます.

このキャッシュはどのように侵害されますか?つまり設定?レジストリ設定?

キャッシュ寿命の性質は何ですか?それは発生することができますか?もしそうなら、どこに?デフォルトは何ですか?キャッシュが決して期限切れになるようにユーザーがIE9の状態を変えることができることは可能ですか?

これは非常に本当の問題です.たとえこれをバグとして見ていなくても、それは確かにカナードを文書化されたそして非常に重要なBCの休憩と見なすべきです.私はそれが十分に深刻であると信じています-少なくともこれらの質問が答えられて/答えられない
3XXファミリーで異なる指令を実験することで、機械の安定性/使いやすさまたはSEOの目的の危険性のあるレジストリ設定を実験しなければならない.私は確かに301で302をデイジキンにしないでください-
検索ボットがどのように反応するのかを言うことができず、私はたくさんのサイトを2回目に推測しようとしているすべてのサイトを見ました.

さらに、これらの質問のいくつかが答えられたとしても、私はJoe PublicがIE9またはそのレジストリでハッキングを開始するか、その問題についてさえ知っています.彼らはただ彼らの陽気な道を楽しんでいないのを楽しんでいます
見てみてください.私がこの問題を回避するために私が私のシステムを修正するならば、私は自分自身と私のクライアントを危険にさらすだけです.

==もう1つのSigh==

これに対処するよりもやっていることの長いリストがあります.

応答9# ->にスキップ
10 #
RobertA

@ Dillyhammer

IEの再起動、そしてOSの再起動でさえ生き残ることを除き、おそらくレジストリでさえないと思われると思います.ただし、それは持続しているように見えます私はそれがレジストリを介して行わなければならないと思います.op.
Procmonを使ってこれについての幸運の手がかりを持っていませんでした.おそらくあなたのものはもっと良いでしょうか?<例>

Bjp私は自分のトレースを見ることができるかどこかの公式にアクセス可能なテストがありますか?

hth

ロバート


11 #
cjbram1 7

この問題に遭遇し、次のように機能するように思われました(特定のURLの301キャッシュをクリアするため):

-IE9を開き、Ctrl + Shift + Pを押してプライベートブラウジングを行います.

-問題のあるURLに移動します(プライベートブラウジングで実行できるはずです)

-その後、通常のブラウジングに戻ると、すべて正常に戻るはずです.

プライベートブラウジングでは、作成されたキャッシュが完全にクリアされるため、影響を受けるURLに設定されている属性もすべてクリアする必要があるため、再び機能するようになります.特に望ましい解決策ではなく、多くの人がここで述べているように、これは
そもそもケースですが、これでうまくいくようでしたので、他の人の役に立つと思います.