2017-08-25 5 views
0

私は通常、すべてのページをhttpsとして扱うウェブサイト(userbob.com)を持っています。しかし、私は1つのサブディレクトリ(userbob.com/tools/)に常にhttpとしてコンテンツを提供しようとしています。現在のところ、ChromeのHSTS機能(これはどのように動作するのかわからない)のように、サイトのページをhttpsで読み込むようになっているようです。私はchrome:// net-internals /#hstsに行き、ChromeのHSTSセットから自分のドメインを削除することができます。次のクエリは、httpsバージョンにリダイレクトせずに必要に応じて機能します。しかし、2回目にページを読み込もうとすると、もう一度リダイレクトされます。私がそれを動作させる唯一の方法は、chrome:// net-internals /#hstsに行き、各リクエストの後にChromeのHSTSから自分のドメインを削除する場合です。 userbob.com/tools/のすべてのページをhttpとしてロードするようにブラウザに指示するにはどうすればよいですか?私のサイトはApache/Tomcat Webサーバーを使用しています。httpページがhttpsページにリダイレクトされないようにする

(ちょっと、私は、toolsディレクトリのページに、httpsの代わりにhttpを使ってページを表示させたいのですが、その理由のいくつかは、httpページをiframeにするためのものです。私は混在コンテンツのエラーを取得します。

答えて

1

HTTP Strict Transport Security(またはHSTS)は、サイトが「自分のサイトでHTTPSを使用したいだけです.HTTPリンクに移動しようとすると、自動的にHTTPSにアップグレードします。あなたはリクエストを送信します "。基本的には、誤ってまたは意図的にHTTPトラフィックを送信することはできません。

これはセキュリティ機能です。 HTTPトラフィックは、他のドメインに傍受され、読み取られ、変更され、リダイレクトされます。 HTTPSのみのWebサイトでは、HTTPトラフィックをHTTPSにリダイレクトする必要がありますが、HTTP経由で最初に依頼が送信されている場合は、さまざまなセキュリティ問題や攻撃があります。

HSTSの仕組みは、お客様のウェブサイトがHTTPヘッダーStrict-Transport-SecurityをHTTPSリクエストで例えばmax-age=31536000; includeSubDomainsの値で送信することです。ブラウザはこれをキャッシュし、HSTSを31536000秒(1年間)、この例ではアクティブにします。このHTTPヘッダーは、ブラウザのWebデベロッパーツールやhttps://securityheaders.ioのようなサイトで見ることができます。 chrome://net-internals/#hstsサイトを使用すると、そのキャッシュをクリアしてHTTPトラフィックを再度許可することができます。ただし、HTTPS経由でサイトにアクセスするとすぐに、ヘッダーが再度送信され、ブラウザはHTTPSのみに戻ります。

この設定を永久に削除するには、Strict-Transport-Securityヘッダーの送信を停止する必要があります。これをあなたのApache/Tomcatサーバーで探し、それをオフにしてください。または、最初にmax-age=0; includeSubDomainsに変更してください(ブラウザに0秒後にキャッシュをクリアするように指示するため、chrome://net-internals/#hstsにアクセスしなくてもオフにします)、このヘッダーを取得するためにHTTPS経由でサイトを訪れる限り、その後完全にヘッダーを削除します。

をあなたはHSTSをオフにしたら、あなたが戻って標準のリダイレクトにHTTP上でいくつかのHTTPSのページといくつかを有することに戻すことができます。

を、反対を警告しないように、私の怠慢だろうがHTTPSは新しい標準であり、すべてのサイトがHTTPSに移行し、それにペナルティを科すことを奨励する一般的なプッシュがあります。詳しくは、https://www.troyhunt.com/life-is-about-to-get-harder-for-websites-without-https/のポストを読んでください。 HTTPSページでは、この問題に対処する別の方法があるかどうかを検討する必要があります。サイト上の単一のHTTPページがCookieの漏洩などのセキュリティ上の問題を引き起こす可能性があります(正しく設定されていない場合)。プラスフレームは恐ろしいので、もう使用しないでください:-)

+1

徹底的な答えをありがとう。 httpsのページをiframeでしかサポートしないようにツールを修正しました。 – John

0

書き換えルールを使用して、https要求をサブディレクトリ内のhttpにリダイレクトすることができます。 toolsディレクトリ内.htaccessファイルを作成し、次の内容を追加します。

RewriteEngine On 
RewriteCond %{HTTPS} on 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

のapache mod_rewriteが有効になっていることを確認してください。

+0

提案をありがとう。しかし、私がすれば、ChromeはERR_TOO_MANY_REDIRECTSエラーを表示してしまいます。私のサーバーがhttpを強制的にこのように強制しようとしているように、Chromeはページをhttpsとして読み込み、サーバーがhttpページに301のリダイレクトを返してからChromeがhttpsページを要求し、このサイクルがChromeが放棄するまで繰り返されます。 – John

関連する問題