"レッスン"というリソースタイプがあります。技術的な理由から(Adobe Shockwaveプラグインとの関係)、一部の古いレッスンはHTTPページでのみ再生でき、httpsでは再生できません。次のように私はこれを処理しようとしていますどのようにRails 2.2はhttpsからhttpバージョンのページにリダイレクトしたくない
は、レッスンコントローラの「ショー」アクションである:(ldb
は、loggingコマンドである)
def show
#we can't play shockwave in https, so redirect to http if we're in https mode and the lesson has a shockwave resource
if @lesson.needs_shockwave? && request.protocol == "https://"
ldb "request.url = #{request.url}"
new_url = request.url.gsub(/^https/,"http")
ldb "redirecting to #{new_url}"
redirect_to new_url and return
else
respond_to do |format|
format.html
format.pdf { render :layout => false }
format.js
end
end
end
私はそれが生成するログに見ることができますURLの新しいHTTPバージョン:
### request.url = https://local.charanga.com/lessons/134726?foo=bar
### redirecting to http://local.charanga.com/lessons/134726?foo=bar
しかし、それはまだ開始時にHTTPSを持っているし、それは常に自分自身に戻ってリダイレクトのループで立ち往生リダイレクト実際のURL。なぜこれが起こっているのでしょうか?
ありがとう。ブラウザでは、それはhttpsにとどまり、あきらめるまで永遠にロードされているように見えます。私はどこにでもhttpsを強制していません - アドレスバーのURLを手動で編集してhttpバージョンに行くことができます。 –
編集:実際には私は上記を行うことはできません:httpにブラウザのバーを編集するが、それでもhttpsバージョンを読み込みます!したがって、ブラウザの(Chrome)の不具合である可能性があります。私は他のいくつかのブラウザを試してみます。 –
申し訳ありませんが、私はおそらくSSLを強制する何か(おそらく私のnginx設定)があると思います。私はさらに調査する必要があります... –