Запрещен источник запроса: http://localhost:3001 при использовании Rails5 и ActionCable

Проблемы с сервером с приложением в Rails 5.0.0.beta2, пытающимся использовать ActionCable.

Использование localhost:3000 работает нормально, так как именно по умолчанию большинство из ActionCable. Но если я попытаюсь запустить сервер rails на порту 3001, это даст мне Request origin not allowed: http://localhost:3001

В документации ActionCable упоминается что-то вроде ActionCable.server.config.allowed_request_origins = ['http://localhost:3001'] который работает для меня, если я положу его в config.ru

Но это кажется странным местом, чтобы выразиться. Я чувствую, что он должен быть в состоянии войти в файл инициализатора или в файл конфигурации моей среды development.rb.

Чтобы еще раз доказать мою точку зрения, что это должно быть разрешено войти, установка ActionCable.server.config.disable_request_forgery_protection = true работает, чтобы игнорировать происхождение запроса, даже когда я включаю его в development.rb.

Почему бы ActionCable.server.config.disable_request_forgery_protection работа в разработке.рб, но ActionCable.server.config.allowed_request_origins нет (но работает ли в config.ru)?

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

3 ответа

Решение

Вы можете положить Rails.application.config.action_cable.allowed_request_origins = ['http://localhost:3001'] в вашем развитии.rb

См. https://github.com/rails/rails/tree/master/actioncable для получения дополнительной информации.

Для моего флаттер-приложения источник запроса был нулевым. Итак, необходимо добавить nilв списке.

Я добавил этот код в config/environments/development.rb, и это работает!

      config.action_cable.allowed_request_origins = [/http:\/\/*/, /https:\/\/*/, /file:\/\/*/, 'file://', nil]

Из этого ответа вы также можете добавить следующий код config/environments/development.rb разрешить запросы от обоих http а также https:

Rails.application.configure do
  # ...

  config.action_cable.allowed_request_origins = [/http:\/\/*/, /https:\/\/*/]
end
Другие вопросы по тегам