XMLHttpRequest basierter CORS-Aufruf mit Basic Auth schlägt in Firefox und Chrome fehl

8

Müssen Sie einen REST GET-Aufruf mit Basic Auth von einem Javascript (in www.domain1.com) machen. Die REST-API befindet sich in domain2.com. Die REST-API kehrt mit den CORS-spezifischen HTTP-Headern zurück. Ich muss IE, Chrome und Firefox unterstützen. Unten erklärt JavaScript das Problem weiter -

  1. Ohne Basic Auth (funktioniert in IE 10, Chrome und Firefox, kümmert sich um ältere IEs durch XDomainRequest-Objekt)

    %Vor%
  2. Mit Basic Auth (funktioniert nur in IE 10, schlägt in Chrome und Firefox fehl)

    %Vor%
  3. Mit Basic Auth (schlägt in Chrome und Firefox fehl)

    %Vor%
  4. Mit Basic Auth (schlägt in Chrome und Firefox fehl)

    %Vor%

    Ich würde hier gerne eine Lösung finden, die in Chrome und FireFox mit Basic Auth funktioniert.

Andy T 07.10.2013, 21:13
quelle

1 Antwort

7

Es wurde gelöst. Bemerkenswert ist, dass der Browser diese domainübergreifenden Aufrufe mit Authentifizierung in 2 Schritten durchführt - ein Preflight-Aufruf vor der eigentlichen Anfrage. Die Art dieses Preflight-Anrufs unterscheidet sich in IE und [Chrome + Firefox]. IE macht einen HTTP-GET-Preflight-Aufruf, und es kommt mit 401 zurück und dann sendet es die Authentifizierungsdetails in der tatsächlichen Anfrage. Aber Chrome und Firefox nehmen einen viel sichereren Ansatz, indem sie einen HTTP-OPTIONS-Aufruf durchführen, um zu prüfen, welche Dinge der Webserver als CORS unterstützt (welche Domänen sind zulässig / unterstützt GET / POST usw.) und der nächste Aufruf geht mit der eigentlichen HTTP-GET-Anfrage mit Authentifizierung.

Leider wurde die API-Seite so codiert, dass sie jeden HTTP-Aufruf authentifizierte. Deshalb kam auch der Aufruf von HTTP OPTIONS mit 401 zurück. [Chrome + Firefox] gab direkt nach dem Preflight-Aufruf eine Ausnahme aus.

In der API-Seite wurde der Code so geändert, dass er 401 bei OPTIONS-Aufrufen nicht zurückgibt, und er hat damit begonnen zu arbeiten.

    
Andy T 09.01.2014, 20:18
quelle

Tags und Links