2017-03-09 5 views
1

"レッスン"というリソースタイプがあります。技術的な理由から(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。なぜこれが起こっているのでしょうか?

答えて

1

ブラウザでhttp URLに直接アクセスする場合は、httpのままにするのか、httpsにリダイレクトしますか?

それはリダイレクトする場合、それはチェックの価値がある:

  1. あなたのRailsアプリでSSLを強制されています - 多分production.rbに?

    など。 config.force_ssl = trueが表示されます。 これはすべてをhttpsに強制的に戻します。

  2. どのレベルでも、デフォルトでhttpsを使用するようにURLを書き換えていますか? nginxで、ラック書換えを使用して、CloudFlareルールなどとして?

+0

ありがとう。ブラウザでは、それはhttpsにとどまり、あきらめるまで永遠にロードされているように見えます。私はどこにでもhttpsを強制していません - アドレスバーのURLを手動で編集してhttpバージョンに行くことができます。 –

+0

編集:実際には私は上記を行うことはできません:httpにブラウザのバーを編集するが、それでもhttpsバージョンを読み込みます!したがって、ブラウザの(Chrome)の不具合である可能性があります。私は他のいくつかのブラウザを試してみます。 –

+0

申し訳ありませんが、私はおそらくSSLを強制する何か(おそらく私のnginx設定)があると思います。私はさらに調査する必要があります... –

関連する問題