Ich möchte einer Ruby on Rails-App, die derzeit auf Heroku gehostet wird, benutzerdefinierte http-Header hinzufügen.
ruby-on-rails
http
http-headers
Jngai1297
quelle
quelle
after_action
.In Schienen 5 funktioniert die folgende Lösung (in Aktionsmethoden)
response.set_header("Header-Name", "Header value")
Referenz: edgeapi
quelle
Legen Sie in Schienen 4 die Antwortheader in der Datei application.rb oder den entsprechenden Umgebungsdateien fest. Sobald Sie dies getan haben, können Sie den Header-Wert überall dort überschreiben, wo Sie ihn in der Steuerung benötigen. Weitere Informationen finden Sie in dieser URL .
quelle
In Rails 3 oder höher einfach
headers['Header-Name'] = 'header value'
arbeitet in Controllern. Dies ist sogar der empfohlene Weg; gemäß der Dokumentation ,
Und das ist immer noch wahr in Rails 6.0 .
quelle
In Schienen 4 funktioniert folgendes:
class API::V1::BaseController after_action :set_version_header protected def set_version_header response.headers['X-ComanyName-Api-Version'] = 'V1' end end
quelle
Wenn Ihre Header statisch sind, z. B. Ihr eigener benutzerdefinierter Server-Header, können Sie ihn einfach aktualisieren
config.action_dispatch.default_headers
. Im folgenden Beispiel wird ein benutzerdefinierter Server-Header festgelegt . füge es deinem hinzuconfig/application.rb
oderconfig/environments/...
:config.action_dispatch.default_headers["Server"] = "MyServer/#{config.version}"
(Vorausgesetzt, Sie setzen
config.version
früher eingestellt)Weitere Informationen finden Sie unter Rails-Handbücher: Konfigurieren von Rails-Anwendungen: Konfigurieren des Aktionsversands :
Dies ist bei jeder Anforderung weniger Arbeit als das Ausführen eines Controller-Rückrufs.
NB: Verwenden Sie für mehr als einen Header
merge!
, um vorhandene wichtige XSS-Header usw. nicht zu entfernen.quelle