2017-04-20 3 views
0

Einige Nachrichtenbusse und Java-Anwendungen hinzufügen Anfrage Header zu ihren HTTP-Anforderungen mit einem Hash darin. Beispiel:Nginx Probleme mit # in Anforderung Header

Vendor-User-Property-#BMC: 1234 

Es scheint, NGINX übergibt diesen Header nicht zusammen mit der proxy_pass-Anfrage. Ich habe versucht, diesen Header neu zu schreiben:

proxy_set_header Vendor-User-Property-BMC "$http_vendor_user_property_#bmc"; 

aber das ist leider keine gültige Variable und es kommt noch hinzu, den String-Wert #bmc.

Gibt es eine Möglichkeit, diese Header unmodified mit proxy_pass oder eine andere Möglichkeit, den Wert dieser Header erhalten?

Locken-Befehl verwendet, das testen:

curl -H "Vendor-User-Property-#BMC: 123" http://domain.tld 
+0

Ich hatte eigentlich mit dem RFCs, um, wenn ein # in einem Header-Namensfeld erlaubt, um zu sehen zu prüfen ist. Stellt sich heraus, ist es. Was Ihr eigentliches Problem angeht: Können Sie versuchen, '$ {http_vendor_user_property_ # bmc}' als Erweiterung zu verwenden? – DaSourcerer

+0

Dann erkennt Nginx die # als Kommentar und beschwert sich darüber, dass die Zeile nicht durch ein Semikolon beendet wird. – Boris

+0

Ok, letzter Versuch: '\ #' statt '#'? – DaSourcerer

Antwort

0

Stellt sich heraus, es keine wirkliche Lösung ist direkt in nginx. Ich stellte einen HAProxy vor nginx und schrieb den HTTP-Header neu, um das Zeichen # zu ersetzen.

http-request set-header Vendor-User-Property-BMC %[req.hdr("Vendor-User-Property-#BMC")]

Verwandte Themen