Ich möchte einer Ruby on Rails-App, die derzeit auf Heroku gehostet wird, benutzerdefinierte http-Header hinzufügen.
Antworten:
Verwenden:
response.headers['HEADER NAME'] = 'HEADER VALUE'
entweder in einer bestimmten Methode oder in einer before_filter-Methode Ihres Anwendungscontrollers, je nachdem, ob Sie diese in einer bestimmten oder in allen Ihren Antworten hinzufügen müssen.
Wie von @BrentMatzelle in den Kommentaren für Rails 5 angegeben :
response.set_header('HEADER NAME', 'HEADER VALUE')
after_action
.
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 .
In Rails 3 oder höher einfach
headers['Header-Name'] = 'header value'
arbeitet in Controllern. Dies ist sogar der empfohlene Weg; gemäß der Dokumentation ,
Die Antwort ist meistens ein Ruby on Rails-Framework-Implementierungsdetail und sollte niemals direkt in Controllern verwendet werden. Controller sollten
ActionController::Base
stattdessen die in definierten Methoden verwenden. Wenn Sie beispielsweise den Inhalts-MIME-Typ der HTTP-Antwort festlegen möchten, verwenden SieActionController::Base#headers
anstelle vonResponse#headers
.
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
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 hinzu config/application.rb
oder config/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 :
config.action_dispatch.default_headers
ist ein Hash mit HTTP-Headern, die standardmäßig in jeder Antwort festgelegt werden.
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.