2016-08-05 9 views
1

Ich schreibe einen REST-Server mit Ruby auf Schienen.Einstellen einer leeren benutzerdefinierten Kopfzeile in Ruby auf Schienen

Ein Teil der Kommunikation mit dem Client besteht darin, bestimmte benutzerdefinierte Header auf vordefinierte Werte zu setzen. In bestimmten Situationen reagiert der Server mit einem benutzerdefinierten Header, der eine leere Zeichenfolge ist. Mein Problem ist, dass Schienen alle leeren Header aus der Antwort weglassen (es wird sogar einen Whitespace-Header weglassen).

Dies ist mein aktueller Code:

config.action_dispatch.default_headers = { 
    'X-WOPI-EmptyLock' => "", 
    'X-WOPI-FullLock' => "astring", 
    'Random-header' => "with value", 
    'Random-empty-header' => "" 
} 

Aber die Antwort wird nur Header enthält, die nicht leer sind Strings:

Resulting headers in response Curl response headers

Gibt es eine Möglichkeit Schienen zu konfigurieren, dass nach wie vor Header senden, auch wenn sie leer sind?

Antwort

0

Sie können Ihr custom headers in config/application.rb Datei

Ex:

config.action_dispatch.default_headers = { 
    'Custom-Header1' => "", # without value 
    'Custom-Header2' => "with value" 
} 

Hinweis: Neustart Schienen-Server vorgenommen, nachdem Änderungen

Ansprechend

Custome-Header1 → 
Custome-Header2 →with value 

aktualisiert Antwort

Hier ist meine controller code wie unten

def home 

    response.headers["My-Custome-Header"] = "With value" 
    response.headers["My-Custome-Header-2"] = "" # Without value 

    render json: {data: "It's working my friend"} 
    end 

Und erforderliche Ausgabe

enter image description here

Hope this Sie wie in Screenshot gezeigt helfen.

+0

Ich habe Ihre Lösung versucht und es funktioniert leider nicht. Custom-Header2 wird hinzugefügt, aber die Antwort enthält immer noch nicht Custom-Header1. – Falcon

+0

wo Sie sehen, dass die Kopfzeile nicht festgelegt ist? – hgsongra

+0

Ich aktualisiere meine Antwort, pls habe Look – hgsongra