Ответ 1
Вы можете положить
Rails.application.config.action_cable.allowed_request_origins = ['http://localhost:3001']
в вашем development.rb
Подробнее см. https://github.com/rails/rails/tree/master/actioncable#allowed-request-origins
У сервера проблемы с приложением в 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
Но это похоже на действительно странное место. Я чувствую, что он должен быть в состоянии войти в файл инициализации или в файл конфигурации среды разработки .rb.
Чтобы еще раз подтвердить мою точку зрения, что ей должно быть разрешено войти туда, параметр ActionCable.server.config.disable_request_forgery_protection = true
работает, чтобы игнорировать начало запроса, даже когда я включаю его в development.rb.
Почему ActionCable.server.config.disable_request_forgery_protection
работает в development.rb, но ActionCable.server.config.allowed_request_origins
не работает (но работает в config.ru)?
Не актуальная проблема, так как у меня есть несколько вариантов работы. Я просто хочу знать, не хватает ли я чего-то очевидного в том, как я думаю, что это должно работать.
Вы можете положить
Rails.application.config.action_cable.allowed_request_origins = ['http://localhost:3001']
в вашем development.rb
Подробнее см. https://github.com/rails/rails/tree/master/actioncable#allowed-request-origins
Из этого ответа вы также можете добавить следующий код в config/environments/development.rb
чтобы разрешать запросы от http
и https
:
Rails.application.configure do
# ...
config.action_cable.allowed_request_origins = [%r{https?://\S+}]
end
config.action_cable.allowed_request_origins
принимает массив строк или регулярных выражений, как указано в документации:
Action Cable будет принимать запросы только от указанного источника, которые передаются в конфигурацию сервера как массив. Истоки могут быть экземплярами строк или регулярных выражений, против которых будет выполняться проверка соответствия.
Регулярное выражение, перечисленное ниже, будет соответствовать http
https
http
и https
из любого домена, поэтому будьте осторожны при их использовании. Это просто вопрос, который нужно использовать.
[%r{https?://\S+}]
# Из этого ответа[%r{http[s]?://\S+}]
[%r{http://*}, %r{https://*}]
[/http:\/\/*/,/https:\/\/*/]