so schaut der Get Request mit dem Delphi Programm aus:
Code:
GET http://
localhost/
api HTTP/1.1
Connection: keep-alive
Host:
localhost
Accept: text/
html,application/xhtml+
xml,application/
xml;q=0.9,*/*;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding: gzip,deflate,sdch, identity
Accept-Language: de-AT,de;q=0.8,en-US;q=0.6,en;q=0.4
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) RockMelt/0.16.91.483 Chrome/16.0.912.77 Safari/535.7
Warum sendet es da keine Digest Daten mit?
Ganz normal - beim ersten GET ist dem Client nicht bekannt, wie er sich anmelden kann. Der Server sendet als Antwort einen 401 Error zurück um dem Client mitzuteilen, dass eine Authentifizierung benötigt wird, daraufhin wiederholt der Client den GET Request und gibt dann (also im zweiten Request auf die gleiche
URL) die Anmeldedaten im Header mit.
Damit der Client weiss, wie man sich anmelden kann (also per Basic, Digest, NTLM oder anderen Verfahren) sendet der Server in seiner Antwort auf das erste GET auch einen Header in dem alle unterstützten Verfahren genannt werden.
(Da der Firefox Beispiel weiter oben auch schon die Digest Anmeldedaten enthält, kann es sich nicht um den ersten Request handeln, der hier mit Fiddler geloggt wurde).
Um das Problem zu analysieren braucht man die gesamte Kommunikation im Fiddler Protokoll, jeweils für Mozilla und
Indy:
* erstes GET auf
http://localhost/api
* die vollständige Response des Servers
* zweites GET
http://localhost/api mit Digest Daten <- wenn
Indy richtig konfiguriert ist, muss es hier auch den Digest Header mitsenden
* die vollständige Response des Servers
Erst im zweiten GET kann man erkennen, ob der Client die vom Server angeforderte Authentifizierungsmethode erkannt hat und benutzt.
Idee: die zweite Response - also nach erfolgreicher Anmeldung - könnte auch einen
Redirect Header enthalten. Die IdHTTP HandleRedirects Property muss dann auf True gesetzt sein, damit der Client dem Redirect folgt:
http://stackoverflow.com/questions/4...page-redirects