Как исправить ошибку 'ActionController :: InvalidAuthenticityToken' в Rails - PullRequest
0 голосов
/ 26 января 2019

Я запускаю приложение в режиме разработки с Rails 5.2, размещенным на удаленном сервере nginx.Когда я пытаюсь опубликовать или удалить запись с помощью Firefox или Microsoft Edge, все работает нормально, но когда я использую Chrome, я получаю сообщение об ошибке ActionController :: InvalidAuthenticityToken от Rails.

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

Rails 5 ActionController :: InvalidAuthenticityToken error и ActionController :: InvalidAuthenticityToken

Ссылаясь на два вышеупомянутых вопроса, я добавил следующий код в мой application_controller.rb

skip_before_action :verify_authenticity_token
protect_from_forgery prepend: true, with: :exception

Однако ошибки сохраняются.

Application Controller

#application_controller.rb
class ApplicationController < ActionController::Base
  skip_before_action :verify_authenticity_token
  protect_from_forgery prepend: true, with: :exception
end

Форма, которая приводит к ошибкам после отправки

   <%= form_for service_line_item, url: services_edit_line_item_path(service_line_item_id: service_line_item.id), html: {class: 'collapse services-form edit-service-line-item-form'} do |f| %>
          <p>
            <%= f.label :title, name: "Title" %>
            <%= f.text_field :title, placeholder: service_line_item.title %>
            <br>
            <%= f.label :body, name: "Body" %>
            <%= f.text_field :body, placeholder: service_line_item.body %>
            <%= f.submit "change" %>
          </p>
   <% end %>

MyПриложение настроено для доступа через подкаталог 'zoom'.Этот блок nginx перенаправляет трафик на мой сервер rails.

location /zoom {
   proxy_pass http://localhost:3000;
}

Это вывод из журнала сервера

Started POST "/zoom/services/new-line-item?service_id=2&service_type=2" for 127.0.0.1 at 2019-01-25 22:55:42 +0000
Processing by ServicesController#new_line_item as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"6t1vC2dqnJ7QQO8+6+U06YP9TJE93rf0wDzXOar2WkeOj+DLKKpBMihz0NzrSiliE5gsZ1WDPXu5E3tQn9GXlw==", "service_line_item"=>{"title"=>"a", "body"=>""}, "commit"=>"create", "service_id"=>"2", "service_type"=>"2"}
HTTP Origin header (https://dev.mysite.com) didn't match request.base_url (http://localhost:3000)
Completed 422 Unprocessable Entity in 0ms (ActiveRecord: 0.0ms)

Я не хочу отключать защиту CSRF, но я не уверен, как обойти эту ошибку без этого,Мне очень странно, почему Firefox и Microsoft Edge работают, а не Chrome.Буду очень признателен за любую помощь.

...