5

こんにちは、これが発生するかどうかはわかりませんがRAILS_ENV=production rails server、ターミナルでaを実行してから、localhost:3000を実行しようとすると、エラーが発生します。

Secure Connection Failed

An error occurred during a connection to localhost:3000.

SSL received a record that exceeded the maximum permissible length.

(Error code: ssl_error_rx_record_too_long)

私のURLがhttpの後に「S」を付けているhttps://localhost:3000/のではなく、それが原因である可能性があることをどこかで読みましたか?http://localhost:3000/しかし、自動的にhttpsに移動し続けるため、変更できません。

これは正常ですか?本番環境で実行しようとしている理由は、アプリをherokuにデプロイしようとするとエラーが発生するためです(質問:Rails + Heroku:ActionView :: Template :: Error)。デバッグ。

4

3 に答える 3

6

SSLをサポートするデフォルトのスクリプトをrails serverハックしない限り、SSLを使用してRailsにアクセスしようとすると、このエラーは正常です。その方法については、このブログ投稿rails serverを参照してください。そうは言っても、ローカルマシンでSSL経由でアプリケーションにアクセスしないことをお勧めします。

おそらく、本番環境を実行しているときにSSLにリダイレクトする構成がRailsアプリにあります。ローカルマシンでSSLを構成しなくても本番環境で実行できるように、その構成を一時的にコメントアウトしてみてください。

Production.rbで次を探します。

config.force_ssl = true

または、application_controller.rb(またはその他のコントローラー)で次のことを確認します。

force_ssl

注:これらは同じ名前ですが、内部では動作が大きく異なります。

または、他のWebサーバーを介してローカルマシンでRailsを実行することもできますrails serverが、それはこの質問の範囲外であり、SSLをサポートするように構成する必要があります。個人的には、自己署名SSL証明書を使用してローカルマシンにnginx(ユニコーンを使用)をセットアップしているため、アプリでSSL関連の動作を簡単にテストできます。

また、ローカルマシンで本番環境で実行する以外に、アプリケーションをデバッグする別の方法を検討することもできますが、その方法は、デバッグしようとしているバグの性質によって異なります。

于 2012-10-30T06:33:26.343 に答える
4

私にとってconfig.force_ssl = trueconfig/environment/production.rbにありました

于 2013-06-01T12:00:42.827 に答える
0

このエラーは、ipv4とipv6に同じ名前でマシンhostnameをに追加したときに発生しました。/etc/hosts

だからそれは次のように見えました:

127.0.0.1     localhost MyMachine
::1       ip6-localhost MyMachine

ipv6パーソナルマシン名を更新して先頭に追加したip6-後、Railsが動作を開始しました。

于 2019-08-27T20:39:01.560 に答える