Запрещен источник запроса: 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