web-dev-qa-db-ja.com

煩わしいエラーメッセージなしでHTTPSからHTTPにリダイレクトする方法

HTTPSログイン後、ユーザーをサイトのHTTPページにリダイレクトしたいと思います。サイト全体でHTTPSを使用することはありません。

私がこれまでに持っているのは次のとおりです。

  1. ユーザーがログインフォームを安全なサイトに投稿します
    • 安全なサーバーが資格情報を検証します
    • 安全なサーバーは302リダイレクトをクライアントに送信します

これは機能しますが、IE6の私のマシンでは、セキュリティで保護されたページを終了するときにデフォルトで警告が表示されるため、ユーザーにエラーメッセージが表示されます。これらのエラーは私にとってユーザビリティキラーであり、したがってショートッパーです。ステップ3が次のようになるように変更しました

  • サーバーはメタリフレッシュでhtmlコードを送信します

しかし、これは非常に遅いです。私のローカルマシンでも、302リダイレクトを実行するよりも著しく低速です。

人々が使用する標準設定で手間のかからないリダイレクトの目標を達成するためのより良い方法はありますか? IE6は、トラフィックの20%〜25%を占めています。また、302リダイレクトについて警告するブラウザと警告しないブラウザについて、誰かが良い情報を持っていますか?私はIE6をブラックリストに載せることを検討しています。そうすれば、IE6だけが遅いメタリフレッシュを取得し、他のすべての人は速い302を取得します。

私はIE6をブラックリストに載せることを検討しています。そうすれば、IE6だけが遅いメタリフレッシュを取得し、他のすべての人は速い302を取得します。

私はそのようなことをします。また、アクセシビリティのために本文にプレーンなHTMLリンクを含めます。

他のブラウザの中には、HTTPSサイトを離れることについて同様の警告を表示するものもありますが、その場合は、(通常は事前にチェックされている)「今後は確認しない」ボタンが表示されます。したがって、彼らがあなたのサイトにたどり着くまでに、彼らはほぼ確実にその警告が消えるように言っているでしょう。これは警告を無意味にするわけではありませんが、少なくとも問題を軽減します。

  1. 安全なサーバーは302リダイレクトをクライアントに送信します

POSTに応答して302を実行するべきではありません。 HTTP RFCを真剣に受け止めた理論上のブラウザは、フォームを新しいURLに再POSTすることでそれに応答する可能性があります。 (皮肉なことに、「安全でないサイトに再送信されている」という情報に関するIE6の警告は誤解を招きにくくなります。)代わりに「303Seeother」を使用してください。

5
bobince

古いトピックを復活させますが、他の開発者が実装を選択できるように、以下の投稿を完了させるために

警告メッセージなしでhttps間をhttp間で移動する1つの方法は、javascriptを使用してクライアントリダイレクトを使用することです。

ステップ

  1. ユーザーはhttpsフォームにログインの詳細を入力し、ログインボタンをクリックします
  2. ログインボタンは、ログイン検証のためにhttpsフォームにポストバックします(ログインが正しいと仮定します)。これもhttpsの下にある保留ページにリダイレクトされ、メッセージが表示されます(サイトがリダイレクトするまでお待ちください)
  3. この保持ページは、JavaScriptをhttpページにリダイレクトします

ブラウザの警告メッセージは表示されません

HTH

11
George

他に方法はないと思います。このエラーメッセージはユーザーの利益のためであり、IE 7およびFirefox3にも存在します。これを防ぐために私が知っている唯一の方法は、サイトを信頼できるものとして追加することです。ブラウザ。

更新:ああ、それは混合コンテンツエラーではありません。エラーを無効にできるとは思いませんが、どちらを意味するのかはわかります。一般に、セキュリティエラーは、潜在的に危険なサイトからユーザーを保護するためのユーザーの利益のためであり、そのため、(潜在的に安全でない)Webサイト自体によって無効にすることはできません。

2
atfergs