12

Wie sieht eine Preflight-HTTP-Anforderung aus, wenn Sie Basic Auth einschließen? Wie die folgende Unterhaltung? Im mit Mühe zu verstehen, welche Header gesendet werden müssen, wo, auch weil es nicht möglich, es mit Firebug richtig zu debuggenCORS und HTTP basic auth

Auftraggeber:

OPTIONS /api/resource HTTP/1.1 
Access-Control-Request-Method: GET 
Origin: http://jsconsole.com 

Server:

HTTP/1.1 200 OK 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: POST, GET, PUT, DELETE 
Access-Control-Allow-Headers: Authorization 
Access-Control-Max-Age: 1728000 
Access-Control-Allow-Credentials: true 

Auftraggeber:

GET /api/resource HTTP/1.1 
Access-Control-Request-Method: GET 
Access-Control-Allow-Credentials: true 
Origin: http://jsconsole.com 

Server:

HTTP/1.1 401 Unauthorized 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: POST, GET, PUT, DELETE 
Access-Control-Allow-Headers: Authorization 
Access-Control-Max-Age: 1728000 
Access-Control-Allow-Credentials: true 
WWW-Authenticate: Basic realm="Authorisation Required" 

Auftraggeber:

GET /api/resource HTTP/1.1 
Access-Control-Allow-Credentials: true 
Authorization: Basic base64encodedUserAndPassword 
Access-Control-Request-Method: GET 
Origin: http://jsconsole.com 

Server:

HTTP/1.1 200 OK 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: POST, GET, PUT, DELETE 
Access-Control-Allow-Headers: Authorization 
Access-Control-Max-Age: 1728000 
Access-Control-Allow-Credentials: true 
+0

Siehe „CORS mit grundlegenden auth“ Abschnitt etwas auf halbem Weg durch den Artikel bei http://avalanche123.com/blog/2011/10/10/cross-domain-javascript-lessons-learned/ –

+0

Leider Lawinen Blog Eintrag ist veraltet. Chrome unterstützt grundlegende Auth. IE jedoch nicht, wenn Sie mit den Sicherheitseinstellungen herumspielen. – ianbeks

Antwort

18

Wenn Sie Anmeldeinformationen sind anfordernden dann der Server mit dem spezifischen Ursprung in der reagieren muss Access-Control-Allow-Origin-Response-Header (und kann daher den Platzhalter *) nicht verwenden. Natürlich müsste es dann auch mit dem Response-Header Access-Control-Allow-Credentials antworten.

+1

Und die Access-Control-Allow-Header ist nicht wirklich erforderlich. FF/Chrome funktioniert ohne es. Die IE-Implementierung von CORS unterstützt jedoch keine grundlegende Authentifizierung, es sei denn, Sie spielen mit den Sicherheitseinstellungen herum herum (Aktivieren Sie domänenübergreifende Anfragen). – ianbeks

+1

Ja, es hängt davon ab, wie Sie grundlegende Authentifizierung durchführen. Wenn Sie den Autorisierungsheader manuell erstellen, haben Sie Recht, aber wenn Sie möchten, dass der Browser den Autorisierungsheader bereitstellt, sind die Berechtigungsnachweise erforderlich. –