So senden Sie eine Antwort mit HAProxy, ohne die Anforderung an Webserver weiterzuleiten

8

Der Server erhält Tausende von OPTIONS -Anforderungen aufgrund von CORS (übergreifende gemeinsame Nutzung von Ressourcen). Im Moment wird jede Optionsanfrage an einen der Server gesendet, was ein wenig verschwenderisch ist, da HAProxy die CORS Header selbst ohne die Hilfe eines Webservers hinzufügen kann.

%Vor%

Damit dies jedoch funktioniert, muss ich mindestens einen Live-Server im cors_headers Backend angeben, und dieser Server wird weiterhin die Anfragen erhalten.

Wie kann ich die Anfrage im Backend ohne Angabe von Servern bearbeiten? Wie kann ich die Weiterleitung der Anfrage an die Server stoppen, während ich die Antwort an den Browser sende und die Verbindung aufrecht erhält?

    
Xeos 24.10.2014, 21:52
quelle

1 Antwort

10

Der einzige Weg, dies zu tun, ist der HAProxy 1.5.14, indem manuell der 503-Fehler ausgelöst wird (keine Server verfügbar sind, um die Anfrage zu bearbeiten) und die Fehlerseite mit benutzerdefinierten CORS-Headern auf die Datei gesetzt wird.

%Vor%

Das file.http sollte am Ende die gewünschten Header und 2 Leerzeilen enthalten

%Vor%

Diese "Methode" hat ein paar Einschränkungen:

  • es gibt keine Möglichkeit, den Ursprung zu überprüfen, bevor die CORS-Header gesendet werden. Sie müssen also entweder eine statische Liste zulässiger Ursprünge haben oder Sie müssen alle Ursprünge zulassen
  • fehlende dynamische Header: Sie können nicht

    Ссылка

oder setzen Sie Expires header.

Hinweis: Wenn Sie die HTTP-Datei im Laufe der Zeit dynamisch aktualisieren, müssen Sie die Änderungen am HAProxy neu starten. Es kann ein graziöser Neustart oder ein harter Neustart sein, in jedem Fall wird die neue Datei geladen, zwischengespeichert und sofort bedient.

    
Xeos 24.10.2014, 23:34
quelle

Tags und Links