Perché ricevo due redirectResponses quando si riceve una risposta 302?
-
24-09-2019 - |
Domanda
Io uso il seguente codice:
- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSHTTPURLResponse *)response {
NSLog(@"Received redirect Response: %@ %@", [response allHeaderFields], [NSHTTPURLResponse localizedStringForStatusCode:[response statusCode]]);
return request;
}
Quando ricevo un 302 con i seguenti dati di intestazione:
< 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
questo è l'output in console gdb:
2010-03-03 08: 42: 03,265 MyProg [68106: 207] risposta di reindirizzamento ricevute: (Null) errore del server 2010-03-03 08: 42: 14,414 MyProg [68106: 207] Risposta di reindirizzamento Ricevuto: {
Collegamento = "keep-alive";
"Content-Encoding" = gzip;
"Content-Length" = 20;
"Content-Type" = "text / html; charset = utf-8";
Date = "mer, 3 mar 2010 07:42:10 GMT";
"Keep-alive" = "timeout = 15, max = 100";
Ubicazione = "<new Location>
";
Server = "lighttpd / 1.4.19";
Variare = "Accept-Encoding"; } Trovati
Quando si utilizza Curl ottengo solo una risposta e tracedump dice lo stesso, quindi sono sicuro che il server invia solo un reindirizzamento.
Perché questo selettore chiamato due volte?
Soluzione
connection:willSendRequest:redirectResponse:
viene chiamato prima di ogni richiesta, così è chiamato una volta la richiesta originale, che non era un redirect così risposta è pari a zero; allora viene chiamato durante il caricamento del bersaglio reindirizzamento, dove la risposta è 302 risposta alla richiesta iniziale.