Рабочий режим Rails: SSL получил запись, длина которой превышает максимально допустимую.

Привет, я не уверен, что это должно произойти, но когда я делаю RAILS_ENV=production rails server в своем терминале, а затем пытаюсь запустить 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-адрес https://localhost:3000/ вместо http://localhost:3000/ с буквой "S" после http? но я не могу изменить его, так как он автоматически переходит на https.

Это нормально? Причина, по которой я пытаюсь запустить его в производстве, заключается в том, что я получаю ошибки, когда пытаюсь развернуть свое приложение в героку (вопрос задан здесь: Rails + Heroku : ActionView::Template::Error ), поэтому я подумал, что это поможет мне в отладке.


person bigpotato    schedule 29.10.2012    source источник


Ответы (3)


Эта ошибка является нормальной при попытке доступа к Rails через SSL, когда он запускается с rails server, если только вы не взломаете скрипт rails server по умолчанию для поддержки SSL. Вы можете посмотреть эту запись в блоге, чтобы узнать, как это сделать. Тем не менее, я бы рекомендовал просто не обращаться к вашему приложению через SSL на вашем локальном компьютере.

Возможно, у вас есть конфигурация в вашем приложении Rails, которая перенаправляет на SSL, когда вы работаете в производственной среде. Попробуйте временно закомментировать эту конфигурацию, чтобы вы могли работать в рабочей среде без необходимости настраивать SSL на своем локальном компьютере.

Ищите в production.rb:

config.force_ssl = true

Или найдите в application_controller.rb (или любом другом контроллере):

force_ssl

Примечание: у них одинаковое имя, но внутри они работают совершенно по-разному.

В качестве альтернативы вы можете запустить Rails на своем локальном компьютере через какой-либо другой веб-сервер, помимо rails server, но это выходит за рамки этого вопроса, и вам все равно придется настроить его для поддержки SSL. Лично я установил nginx (с единорогом) на моем локальном компьютере с самозаверяющим сертификатом SSL, чтобы я мог легко тестировать поведение, связанное с SSL, в моем приложении.

Кроме того, вы можете рассмотреть альтернативные способы отладки вашего приложения, помимо запуска его в рабочей среде на локальном компьютере, но то, как именно это сделать, зависит от характера ошибки, которую вы пытаетесь отладить.

person Nathan    schedule 30.10.2012
comment
Ссылка на сообщение в блоге, которое вы разместили, похоже, не работает. Не загружается. - person dhrubo_moy; 10.08.2016
comment
@Dhrubo_moy Попробуйте gist.github.com/roloenusa/859755/ - person Nathan; 11.08.2016
comment
Здорово. Большое спасибо. Я попытался закомментировать строку config.force_ssl = true. Но все еще с ошибкой SSL_ERROR_RX_RECORD_TOO_LONG. - person dhrubo_moy; 11.08.2016

Для меня config.force_ssl = true был в config/environments/production.rb

person Hugo    schedule 01.06.2013
comment
Это неправда, Бред. Предыдущий автор предлагает production.rb или application_controller.rb. В моем случае (в надежде помочь другим) config.force_ssl = true устанавливается в файле config/environments/production.rb. - person Hugo; 28.08.2013
comment
Кроме того, тогда у меня не было прав, чтобы добавить его в качестве комментария. - person Hugo; 28.08.2013

Эта ошибка возникла у меня, когда я добавил hostname моей машины в /etc/hosts с тем же именем для ipv4 и ipv6.

Так это выглядело:

127.0.0.1     localhost MyMachine
::1       ip6-localhost MyMachine

После обновления имени персональной машины ipv6 с добавлением ip6- в начало, Rails заработал.

person Daniel P. Clark    schedule 27.08.2019