Подтвердить что ты не робот

Неверный запрос: неверный формат HTTP, синтаксический анализ не выполняется

Я постоянно получаю эту ошибку в журнале серверов rails:

Invalid request: Invalid HTTP format, parsing fails.
    /home/budkin/gamestown/vendor/cache/ruby/2.0.0/gems/thin-1.6.1/lib/thin/request.rb:84:in `execute'
    /home/budkin/gamestown/vendor/cache/ruby/2.0.0/gems/thin-1.6.1/lib/thin/request.rb:84:in `parse'
    /home/budkin/gamestown/vendor/cache/ruby/2.0.0/gems/thin-1.6.1/lib/thin/connection.rb:41:in `receive_data'
    /home/budkin/gamestown/vendor/cache/ruby/2.0.0/gems/faye-websocket-0.7.2/lib/faye/adapters/thin.rb:44:in `receive_data'
    /home/budkin/gamestown/vendor/cache/ruby/2.0.0/gems/eventmachine-1.0.3/lib/eventmachine.rb:187:in `run_machine'
    /home/budkin/gamestown/vendor/cache/ruby/2.0.0/gems/eventmachine-1.0.3/lib/eventmachine.rb:187:in `run'
    /home/budkin/gamestown/vendor/cache/ruby/2.0.0/gems/thin-1.6.1/lib/thin/backends/base.rb:73:in `start'
    /home/budkin/gamestown/vendor/cache/ruby/2.0.0/gems/thin-1.6.1/lib/thin/server.rb:162:in `start'
    /home/budkin/gamestown/vendor/cache/ruby/2.0.0/gems/rack-1.5.2/lib/rack/handler/thin.rb:16:in `run'
    /home/budkin/gamestown/vendor/cache/ruby/2.0.0/gems/rack-1.5.2/lib/rack/server.rb:264:in `start'
    /home/budkin/gamestown/vendor/cache/ruby/2.0.0/gems/railties-4.0.1/lib/rails/commands/server.rb:84:in `start'
    /home/budkin/gamestown/vendor/cache/ruby/2.0.0/gems/railties-4.0.1/lib/rails/commands.rb:76:in `block in <top (required)>'
    /home/budkin/gamestown/vendor/cache/ruby/2.0.0/gems/railties-4.0.1/lib/rails/commands.rb:71:in `tap'
    /home/budkin/gamestown/vendor/cache/ruby/2.0.0/gems/railties-4.0.1/lib/rails/commands.rb:71:in `<top (required)>'
    bin/rails:4:in `require'
    bin/rails:4:in `<main>'

все работает отлично, но ошибки просто раздражают

Да, это на thin

4b9b3361

Ответ 1

У меня была такая же ошибка, как и выше. В моем случае клиент (.net) пытался подключиться к моему (тонкому) серверу, используя HTTPS вместо HTTP. Как только я сменил протокол на базовый http, ошибка исчезла.

Ответ 2

Имел ту же проблему с тонким сервером.

Я бросил файл binding.pry в файле thin request.rb и обнаружил, что следующий запрос вызвал ошибку: "GET/info? TxtAirPlay & txtRAOP RTSP/1.0\r\n\r\n"

Оказывается, это может быть проблемой с Yosemite (я запускаю 10.10.3) и локальным портом, который вы используете. Я работаю на порту 5000, и если вы посмотрите на следующий пост, вы увидите, что Apple AirTunes работает на порту 5000: AirPlay испортил локальный хост

Попробуйте изменить порт сервера rails, чтобы избавиться от ошибки (я случайно выбрал 5212):

rails s -p 5212

Ответ 3

Я посетил https://localhost:3000 во время сеанса отладки рельсов s -e production, у которого есть config.force_ssl = true.

Это вынудило последнюю версию хром только попытаться посетить https://localhost:3000.com, даже когда я специально ввел http://localhost:3000.

Если ваше приложение работает в режиме инкогнито или в другом браузере. Я бы предложил очистить историю просмотров.

После bind.pry на тонком сервере. Я получал шифрование @data:

0\tlocalhost\x00\x17\x00\x00\x00#\x00\x00\x00\r\x00\x12\x00\x10\x06\x01\x06\x03\x05\x01\x05\x03\x04\x01\x04\x03\x02\x01\x02\x03\x00\x05\x00\x05\x01\x00\x00\x00\x00\x00\x12\x00\x00\x00\x10\x00\x0E\x00\f\x02h2\bhttp/1.1uP\x00\x00\x00\v\x00\x02\x01\x00\x00\n\x00\b\x00\x06\x00\x1D\x00\x17\x00\x18

Ответ 4

  • Используете ли вы gem thin
  • Если это так, убедитесь, что оно находится в правильной среде вашего Gemfile gem 'thin', group: :development
  • Else: попробуйте открыть http://localhost:3000 в других браузерах.... или если у вас только один браузер... вы можете откройте окно "инкогнито" или 'private'
  • Если он работает в другом браузере, вам нужно rake tmp:clear и очистить кеш браузера

Ответ 5

если вы прокомментируете его config.force_ssl = true и ошибка все еще появляется - проверьте ваш запрос в браузере, он может быть еще http s

Ответ 6

В моем случае это было связано с тем, что Chrome применяет HSTS на localhost. Я использовал этот ответ, чтобы исправить:

  • Surf to chrome://net-internals/# hsts
  • В разделе удаления введите "localhost" и удалите запись из Chrome.