it-swarm.com.de

Wie fügt man einen benutzerdefinierten http-Header hinzu?

Ich suche nach benutzerdefinierten http-Headern für eine Ruby on Rails App, die derzeit auf Heroku gehostet wird.

65
Jngai1297

Verwenden:

response.headers['HEADER NAME'] = 'HEADER VALUE'

entweder in einer bestimmten Methode oder in einer before_filter-Methode Ihres Anwendungscontrollers, je nachdem, ob Sie dies in einer bestimmten oder in allen Ihren Antworten hinzufügen möchten.

UPDATE für Rails 5 - 24. Februar 2018

Wie von @BrentMatzelle in den Kommentaren vermerkt, für Rails 5 :

response.set_header('HEADER NAME', 'HEADER VALUE')
109

In Rails 5 funktioniert die folgende Lösung (in Aktionsmethoden)

response.set_header("Header-Name", "Header value")

Referenz: edgeapi

21
Shakil

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-Implementierungsdetails) und sollte niemals direkt in Controllern verwendet werden. Controller sollten die in ActionController::Base definierten Methoden verwenden. Wenn Sie beispielsweise den MIME-Typ für den Inhalt der HTTP-Antwort festlegen möchten, verwenden Sie ActionController::Base#headers anstelle von Response#headers.

Und dies gilt immer noch für Rails 5.2 .

5
Franklin Yu

In Rails 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
2
Slava Zharkov