2012-04-12 8 views
3

Was ist der sauberste Weg, dies zu tun? Einige Rack-Middleware? Ich habe versucht, env['SERVER_SOFTWARE'] zu ändern, aber ich bekomme immer noch als Antwort:Sinatra auf Thin: Wie man HTTP 'Server' Antwortkopfzeile versteckt oder ändert

Server: thin 1.3.1 codename Triple Espresso 

Wie der Wert dieses Header ändern oder entfernen Sie es completetly von Antwort?

EDIT

Ein weiterer Versuch:

before do 
    headers 'Server' => 'ipm' 
end 

after do 
    headers 'Server' => 'ipm' 
end 

aber noch keine Veränderungen.

Antwort

4

Das funktioniert hier:

require 'sinatra' 

get '/' do 
    [200, {'Server' => 'My Server'}, 'contents'] 
end 

Wenn Sie wollen, dass es für alle Anforderungen tun:

class ChangeServer 
    def initialize(app) 
    @app = app 
    end 

    def call(env) 
    res = @app.call(env) 
    res[1]['Server'] = 'My server' 
    return res 
    end 
end 

Und Sie dann use ChangeServer in Ihrer Anwendung.

+0

Vielen Dank für die Antwort. Die meisten Routen geben jedoch etwas wie "json model_instance" zurück. Es ist nicht die bevorzugte Lösung, jeder Route einen Hash der Header hinzuzufügen. – Ernest

+0

Ich habe die Antwort bearbeitet, um deinen Kommentar zu reflektieren. –

+0

Ja, danke. – Ernest