2016-06-11 10 views
2

Ich baue eine Angular 2-App, die eine CORS-POST-Anfrage (Cross-Origin Resource Sharing) mit Basis-Authentifizierung (https://en.wikipedia.org/wiki/Basic_access_authentication) an den Server senden muss.Preflight-CORS-Anfragen mit Standardauthentifizierung in Angular 2

Ich bin schön Einstellung der Authorization-Header für die POST-Anfrage selbst, aber wie es ist CORS, sendet der Browser zuerst automatisch die Preflight-OPTIONS-Anfrage. Leider ist der Server falsch konfiguriert (Why does the preflight OPTIONS request of an authenticated CORS request work in Chrome but not Firefox?) und erfordert die Basic Auth auch im Preflight. Es ist ein 3rd Party Server, ich kann es nicht ändern.

Gibt es eine Möglichkeit, sie zu überwinden (z. B. den Authorizion-Header zu Preflights hinzufügen, Preflights deaktivieren, ...)?

Antwort

3

Die Preflight-Anforderung wird vom Browser nur ausgeführt, um zu überprüfen, ob die CORS-Header festgelegt sind. Wenn es die erforderlichen Header nicht erhält, gibt es nichts, was Sie tun können. Es wird einfach nicht die eigentliche POST-Anfrage machen.

Was Sie tatsächlich tun können, ist die Anforderung von einem Server, den Sie steuern. Stellen Sie eine API für Ihren Client bereit, um Ihren Server anzurufen, und führen Sie dann den Anruf auf dem fehlkonfigurierten Server aus, und leiten Sie die Antwort an Ihren Browser-Client weiter.

+0

"... wird vom Server gemacht ..." - meinen Sie mit dem Browser, oder? Ja, das dachte ich mir ... Danke Günter. –

+0

Sorry, richtig, behoben. –

+1

Genau, da gehe ich als nächstes. Gut alles serverseitig wo ich alles unter Kontrolle habe :-) –