Warum erhalte ich zwei redirectResponses, wenn eine 302-Antwort erhalten?
-
24-09-2019 - |
Frage
Ich verwende den folgenden Code:
- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSHTTPURLResponse *)response {
NSLog(@"Received redirect Response: %@ %@", [response allHeaderFields], [NSHTTPURLResponse localizedStringForStatusCode:[response statusCode]]);
return request;
}
Wenn ich ein 302 mit den folgenden Kopfdaten erhalten:
< HTTP/1.1 302 Found
< Date: Wed, 03 Mar 2010 07:47:17 GMT
< Server: lighttpd/1.4.19
< Content-length: 0
< Content-type: text/html;charset=utf-8
< Location: `<new Location>`
< Vary: Accept-Encoding
Dies ist die Ausgabe in GDB-Konsole:
2010-03-03 08: 42: 03,265 myprog [68106: 207] Received Umleitung Antwort: (Null) Serverfehler 2010-03-03 08: 42: 14,414 myprog [68106: 207] Empfangene Umleitung Antwort: {
Verbindung = "Keep-Alive";
"Content-Encoding" = gzip;
"Content-Length" = 20;
"Content-Type" = "text / html; charset = utf-8";
Date = "Mi, 3. März 2010 07.42.10 GMT";
"Keep-Alive" = "timeout = 15, max = 100";
Location = "<new Location>
";
Server = "lighttpd / 1.4.19";
Variieren = "Accept-Encoding"; } Gefunden
Wenn Locke ich mit bekommen nur eine Antwort und tracedump sagt das gleiche, so bin ich sicher, dass der Server nur eine Umleitung sendet.
Warum heißt dieser Selektor zweimal?
Lösung
connection:willSendRequest:redirectResponse:
wird vor jeder Anforderung aufgerufen, so dass er einmal auf der ursprünglichen Anforderung aufgerufen wird, das war nicht eine Umleitung so Antwort ist gleich Null; dann wird es genannt, wenn das Umleitungsziel Laden, wo ist die 302 Antwort auf die ursprüngliche Anfrage.