Avoir des problèmes de serveur avec une application dans Rails 5.0.0.beta2 en essayant d'utiliser ActionCable.
Utiliser localhost: 3000 fonctionne bien, car c’est la plupart des valeurs par défaut d’ActionCable. Mais si je tente d’exécuter le serveur Rails sur le port 3001, cela me donne Request Origin not allowed: http://localhost:3001
La documentation ActionCable mentionne l'utilisation de quelque chose comme ActionCable.server.config.allowed_request_origins = ['http://localhost:3001']
qui fonctionne pour moi si je le mets dans config.ru
Mais cela semble être un endroit vraiment étrange pour le dire. Je pense qu'il devrait pouvoir aller dans un fichier d'initialisation ou dans mon fichier de configuration d'environnement development.rb.
Pour prouver davantage que je devrait être autorisé à y entrer, le paramètre ActionCable.server.config.disable_request_forgery_protection = true
permet d'ignorer la requête Origin, même lorsque je l'inclue dans development.rb.
Pourquoi ActionCable.server.config.disable_request_forgery_protection
fonctionnerait-il dans development.rb, alors que ActionCable.server.config.allowed_request_origins
ne fonctionnerait pas (mais fonctionne dans config.ru)?
Pas un problème urgent, car j'ai plusieurs options pour contourner le problème. Je veux juste savoir s'il me manque quelque chose d'évident sur la façon dont cela devrait fonctionner, selon moi.
Vous pouvez mettre Rails.application.config.action_cable.allowed_request_origins = ['http://localhost:3001']
dans votre développement.rb
Voir https://github.com/Rails/rails/tree/master/actioncable#allowed-request-origins pour plus d'informations
À partir de cette réponse , vous pouvez également ajouter le code suivant à config/environments/development.rb
pour autoriser les demandes de http
et https
:
Rails.application.configure do
# ...
config.action_cable.allowed_request_origins = [%r{https?://\S+}]
end
config.action_cable.allowed_request_origins
accepte un tableau de chaînes ou d'expressions régulières lorsque le documentation indique :
Action Cable acceptera uniquement les demandes d'origines spécifiées, lesquelles sont passés à la configuration du serveur sous forme de tableau. Les origines peuvent être des exemples de chaînes ou d'expressions régulières, contre lesquels une vérification de le match sera effectué.
Les expressions rationnelles répertoriées ci-dessous correspondront aux URL http
et https
de n'importe quel domaine, soyez donc prudent lorsque vous les utilisez. C'est juste une question de préférence lequel utiliser.
[%r{https?://\S+}]
# extrait de cette réponse[%r{http[s]?://\S+}]
[%r{http://*}, %r{https://*}]
[/http:\/\/*/, /https:\/\/*/]