webentwicklung-frage-antwort-db.com.de

Request Origin nicht zulässig: http: // localhost: 3001 bei Verwendung von Rails5 und ActionCable

Serverprobleme mit einer App in Rails 5.0.0.beta2 beim Versuch, ActionCable zu verwenden.

Die Verwendung von localhost: 3000 funktioniert einwandfrei, da die meisten ActionCable-Werte standardmäßig verwendet werden. Wenn ich jedoch versuche, den Rails-Server auf Port 3001 auszuführen, wird Request Origin not allowed: http://localhost:3001 angezeigt.

Die ActionCable-Dokumente erwähnen die Verwendung von etwas wie ActionCable.server.config.allowed_request_origins = ['http://localhost:3001'], das für mich funktioniert, wenn ich es in config.ru setze.

Aber das scheint ein seltsamer Ort zu sein. Ich habe das Gefühl, dass es in der Lage sein sollte, in eine Initialisierungsdatei oder in meine Konfigurationsdatei der development.rb-Umgebung zu gehen.

Um meinen Punkt weiter zu beweisen, dass dort erlaubt sein sollte, ignoriert die Einstellung ActionCable.server.config.disable_request_forgery_protection = true die Anforderung Origin, selbst wenn ich sie in development.rb einfüge.

Warum würde ActionCable.server.config.disable_request_forgery_protection in development.rb funktionieren, aber ActionCable.server.config.allowed_request_origins nicht (funktioniert aber in config.ru)?

Kein dringendes Thema, da ich verschiedene Möglichkeiten habe, umzugehen. Ich möchte nur wissen, ob mir etwas offensichtliches fehlt, wie ich mir vorstelle, dass dies funktionieren sollte.

31
daybreaker

Sie können Rails.application.config.action_cable.allowed_request_origins = ['http://localhost:3001'] in Ihre development.rb einfügen

Siehe https://github.com/Rails/rails/tree/master/actioncable#allowed-request-origins für weitere Informationen

49

In dieser Antwort können Sie auch den folgenden Code zu config/environments/development.rb hinzufügen, um Anforderungen von http und https zuzulassen:

Rails.application.configure do
  # ...

  config.action_cable.allowed_request_origins = [%r{https?://\S+}]
end

config.action_cable.allowed_request_origins akzeptiert ein Array von Strings oder regulären Ausdrücken als Dokumentationsstatus :

Action Cable akzeptiert nur Anforderungen von bestimmten Quellen, wobei werden als Array an die Serverkonfiguration übergeben. Die Ursprünge können .__ sein. Instanzen von Strings oder regulären Ausdrücken, gegen die eine Prüfung auf .__ erfolgt. Das Spiel wird durchgeführt.

Die unten aufgelisteten Regex-Werte stimmen mit den http- und https-URLs einer beliebigen Domäne überein. Seien Sie daher vorsichtig, wenn Sie sie verwenden. Es ist nur eine Frage der Präferenz, welche man verwenden soll.

  • [%r{https?://\S+}] # entnommen aus diese Antwort
  • [%r{http[s]?://\S+}]
  • [%r{http://*}, %r{https://*}]
  • [/http:\/\/*/, /https:\/\/*/]
1