Как исправить ошибку «Неверные параметры запроса» в приложении Rails? - PullRequest
2 голосов
/ 27 марта 2019

Пользователь недавно вызвал ошибку во время регистрации на нашем сайте.

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

Из его пользовательского агента я знаю, что у него была эта ошибка в IE11.

Это следошибки:

An ActionController::BadRequest occurred in registrations#new:

  Invalid query parameters: Invalid encoding for parameter: Martin�



-------------------------------
Request:
-------------------------------

  ERROR: Failed to generate exception summary:

  ActionView::Template::Error: Invalid query parameters: Invalid encoding for parameter: Martin�

  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/request/utils.rb:36:in `check_param_encoding'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/request/utils.rb:31:in `block in check_param_encoding'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/request/utils.rb:31:in `each_value'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/request/utils.rb:31:in `check_param_encoding'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/http/request.rb:350:in `block in GET'
  /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.4/lib/rack/request.rb:57:in `fetch'
  /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.4/lib/rack/request.rb:57:in `fetch_header'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/http/request.rb:347:in `GET'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/http/parameters.rb:53:in `parameters'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/http/filter_parameters.rb:41:in `filtered_parameters'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notifier/views/exception_notifier/_request.text.erb:4:in `_vendor_bundle_ruby_______gems_exception_notification_______lib_exception_notifier_views_exception_notifier__request_text_erb__475519309245050229_56429000'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/template.rb:157:in `block in render'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/notifications.rb:168:in `instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/template.rb:352:in `instrument_render_template'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/template.rb:155:in `render'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/partial_renderer.rb:342:in `block in render_partial'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/abstract_renderer.rb:42:in `block in instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/notifications.rb:166:in `block in instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/notifications.rb:166:in `instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/abstract_renderer.rb:41:in `instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/partial_renderer.rb:331:in `render_partial'
  /app/vendor/bundle/ruby/2.4.0/gems/scout_apm-2.4.18/lib/scout_apm/tracer.rb:77:in `block in render_partial_with_scout_instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/scout_apm-2.4.18/lib/scout_apm/tracer.rb:34:in `instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/scout_apm-2.4.18/lib/scout_apm/tracer.rb:73:in `render_partial_with_scout_instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/partial_renderer.rb:310:in `render'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/renderer.rb:47:in `render_partial'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/helpers/rendering_helper.rb:35:in `render'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notifier/views/exception_notifier/exception_notification.text.erb:9:in `block in _vendor_bundle_ruby_______gems_exception_notification_______lib_exception_notifier_views_exception_notifier_exception_notification_text_erb__1927315004961554431_56948680'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notifier/views/exception_notifier/exception_notification.text.erb:7:in `map'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notifier/views/exception_notifier/exception_notification.text.erb:7:in `_vendor_bundle_ruby_______gems_exception_notification_______lib_exception_notifier_views_exception_notifier_exception_notification_text_erb__1927315004961554431_56948680'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/template.rb:157:in `block in render'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/notifications.rb:168:in `instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/template.rb:352:in `instrument_render_template'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/template.rb:155:in `render'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/template_renderer.rb:52:in `block (2 levels) in render_template'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/abstract_renderer.rb:42:in `block in instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/notifications.rb:166:in `block in instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/notifications.rb:166:in `instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/abstract_renderer.rb:41:in `instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/template_renderer.rb:51:in `block in render_template'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/template_renderer.rb:59:in `render_with_layout'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/template_renderer.rb:50:in `render_template'
  /app/vendor/bundle/ruby/2.4.0/gems/scout_apm-2.4.18/lib/scout_apm/tracer.rb:77:in `block in render_template_with_scout_instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/scout_apm-2.4.18/lib/scout_apm/tracer.rb:34:in `instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/scout_apm-2.4.18/lib/scout_apm/tracer.rb:73:in `render_template_with_scout_instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/template_renderer.rb:14:in `render'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/renderer.rb:42:in `render_template'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/renderer.rb:23:in `render'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/rendering.rb:103:in `_render_template'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/rendering.rb:83:in `render_to_body'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/abstract_controller/rendering.rb:24:in `render'
  /app/vendor/bundle/ruby/2.4.0/gems/actionmailer-5.1.5/lib/action_mailer/base.rb:921:in `block in collect_responses'
  /app/vendor/bundle/ruby/2.4.0/gems/actionmailer-5.1.5/lib/action_mailer/collector.rb:26:in `custom'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/abstract_controller/collector.rb:9:in `text'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notifier/email_notifier.rb:117:in `block in compose_email'
  /app/vendor/bundle/ruby/2.4.0/gems/actionmailer-5.1.5/lib/action_mailer/base.rb:922:in `collect_responses'
  /app/vendor/bundle/ruby/2.4.0/gems/actionmailer-5.1.5/lib/action_mailer/base.rb:830:in `mail'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notifier/email_notifier.rb:116:in `compose_email'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notifier/email_notifier.rb:42:in `exception_notification'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/abstract_controller/base.rb:186:in `process_action'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/abstract_controller/callbacks.rb:20:in `block in process_action'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/callbacks.rb:97:in `run_callbacks'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/abstract_controller/callbacks.rb:19:in `process_action'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/abstract_controller/base.rb:124:in `process'
  /app/vendor/bundle/ruby/2.4.0/gems/actionmailer-5.1.5/lib/action_mailer/rescuable.rb:23:in `block in process'
  /app/vendor/bundle/ruby/2.4.0/gems/actionmailer-5.1.5/lib/action_mailer/rescuable.rb:15:in `handle_exceptions'
  /app/vendor/bundle/ruby/2.4.0/gems/actionmailer-5.1.5/lib/action_mailer/rescuable.rb:22:in `process'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/rendering.rb:30:in `process'
  /app/vendor/bundle/ruby/2.4.0/gems/actionmailer-5.1.5/lib/action_mailer/base.rb:609:in `block in process'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/notifications.rb:166:in `block in instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/notifications.rb:166:in `instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/actionmailer-5.1.5/lib/action_mailer/base.rb:608:in `process'
  /app/vendor/bundle/ruby/2.4.0/gems/actionmailer-5.1.5/lib/action_mailer/message_delivery.rb:105:in `block in processed_mailer'
  /app/vendor/bundle/ruby/2.4.0/gems/actionmailer-5.1.5/lib/action_mailer/message_delivery.rb:104:in `tap'
  /app/vendor/bundle/ruby/2.4.0/gems/actionmailer-5.1.5/lib/action_mailer/message_delivery.rb:104:in `processed_mailer'
  /app/vendor/bundle/ruby/2.4.0/gems/actionmailer-5.1.5/lib/action_mailer/message_delivery.rb:95:in `deliver_now'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notifier/email_notifier.rb:172:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notifier.rb:117:in `fire_notification'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notifier.rb:58:in `block in notify_exception'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notifier.rb:57:in `each'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notifier.rb:57:in `notify_exception'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notification/rack.rb:51:in `rescue in call'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notification/rack.rb:40:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/warden-1.2.7/lib/warden/manager.rb:36:in `block in call'
  /app/vendor/bundle/ruby/2.4.0/gems/warden-1.2.7/lib/warden/manager.rb:35:in `catch'
  /app/vendor/bundle/ruby/2.4.0/gems/warden-1.2.7/lib/warden/manager.rb:35:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.4/lib/rack/etag.rb:25:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.4/lib/rack/conditional_get.rb:25:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.4/lib/rack/head.rb:12:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.4/lib/rack/session/abstract/id.rb:232:in `context'
  /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.4/lib/rack/session/abstract/id.rb:226:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/middleware/cookies.rb:613:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/middleware/callbacks.rb:26:in `block in call'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/callbacks.rb:97:in `run_callbacks'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/middleware/callbacks.rb:24:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/middleware/debug_exceptions.rb:59:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/middleware/show_exceptions.rb:31:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.5/lib/rails/rack/logger.rb:36:in `call_app'
  /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.5/lib/rails/rack/logger.rb:24:in `block in call'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/tagged_logging.rb:69:in `block in tagged'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/tagged_logging.rb:26:in `tagged'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/tagged_logging.rb:69:in `tagged'
  /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.5/lib/rails/rack/logger.rb:24:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/middleware/remote_ip.rb:79:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/middleware/request_id.rb:25:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.4/lib/rack/method_override.rb:22:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.4/lib/rack/runtime.rb:22:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/cache/strategy/local_cache_middleware.rb:27:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/middleware/executor.rb:12:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/middleware/static.rb:125:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.4/lib/rack/sendfile.rb:111:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/scout_apm-2.4.18/lib/scout_apm/instruments/middleware_summary.rb:58:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.5/lib/rails/engine.rb:522:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/puma-3.11.2/lib/puma/configuration.rb:225:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/puma-3.11.2/lib/puma/server.rb:624:in `handle_request'
  /app/vendor/bundle/ruby/2.4.0/gems/puma-3.11.2/lib/puma/server.rb:438:in `process_client'
  /app/vendor/bundle/ruby/2.4.0/gems/puma-3.11.2/lib/puma/server.rb:302:in `block in run'
  /app/vendor/bundle/ruby/2.4.0/gems/puma-3.11.2/lib/puma/thread_pool.rb:120:in `block in spawn_thread'

У меня также есть доступ к этим двум параметрам:

* rack.request.query_hash                        :{"name"=>"Martin\xE9"}

* rack.request.query_string                      : &name=Martin_

Я хотел бы понять, почему эта ошибка появилась для этого конкретного пользователя, а не длядругие, у которых также был акцент в их именах.Может ли это быть браузер или почтовый ящик?Есть ли способ исправить эту проблему?

...