Rails config.force_ssl = true
を使用したアプリケーションがありましたが、SSL暗号化は必要ありませんが、アプリはまだhttpsにリダイレクトされます。これはApacheのHTTP Strict Transport Securityの問題です] 。どうすれば無効にできますか?
Apacheでは問題ありませんが、RailsはHSTSヘッダーを送信します。
Chromeでは、about:net-internals
、 ImperialViolet:ChromeのHSTS UI で説明されています。また、キャッシュをクリアする必要があります。config.force_ssl = true
は、301(永続)リダイレクトも使用します。
さらに、 this answer に従って、アプリケーションにmax-age = 0のSTSヘッダーを送信させることもできます。コントローラーで:
response.headers["Strict-Transport-Security"] = 'max-age=0'
@Brunoの答えを指摘したかっただけで、@ JoeVanDykの提案は真実であり、Rails/Apacheのコンテキストを超えて適用できます。 PHPとNginxを使用しています。 PHPは私の場合は何の関係もありませんが、Nginxでの手順は次のとおりです。
//sorry here's the nginx.conf part first, can't figure out how to mix multi-line
//code with an ordered list
server {
#...
#change:
# add_header Strict-Transport-Security "max-age=315360000; includeSubdomains";
#to:
add_header Strict-Transport-Security "max-age=0;";
#...
}
「ブラウザ履歴」をクリアします。 @JoeVanDykの提案を明確にするために、キャッシュのクリアが機能しなかったため、「閲覧履歴」をクリアする必要があると思います(Chrome/Firefoxでテスト済み。詳細がわかったらコメントを追加してください)。
nginx.confファイル(上記のコードを参照)
サーバーを再起動
root@ip-xxx-xxx-xxx:~# /etc/init.d/nginx restart
。
この後、nginx add_header Strict..
コマンドを以前のものに戻すことができます。もう一度手順1〜3を繰り返してください。
開発にIPアドレスを使用していたため、ChromeのHSTSエントリを削除できませんでした。chrome://net-internals/#hsts
エントリを削除します。 Chromeは../AppData/local/Google/Chrome/User Data/Default/TransportSecurityにエントリを保存するので、ファイルを削除しただけです。もちろん、すべてのHSTS要求を削除しますが、時間の経過とともに再構築されると思われます。
計算IDは、これについて少し考えを提供します。キャッシュ時間を0に設定するのが最善策です。これをオフにする場合は、クライアントブラウザーをクリアするために、何週間も0のままにしておく必要があります。 chrome(独自のブラウザ用)でHSTSをクリアする必要がある場合は、chrome://net-internals/#hsts
をアドレスバーに入力して、特定のブラウザでサイトのキャッシュをクリアします。以下の「出入り口」と組み合わせると便利になります。
カスタムヘッダー=>キーを設定/スプーフィングすることにより、一時的なHSTSモードを設定できます。基本的に、特別なリクエストヘッダーが存在し、それがキーと一致する場合、必要なキャッシュ時間でHSTSを設定します。これにより、自分以外のすべてのトラフィックに対してHSTSをオンまたはオフにできます。グローバルに有効にする前にHSTSを試すのに便利です(すべてのアセットがロードされていることを確認するため)。また、修復中に一時的にクライアントキャッシュをクリアしたい場合にも便利です(テストの余地があります)。