C'è un modo per determinare se si verifica un reindirizzamento durante una richiesta Web?
-
06-07-2019 - |
Domanda
Sto usando HttpWebRequest per grattare Wikipedia.org. Molte volte ci saranno collegamenti ad argomenti su una pagina che sono stati consolidati e quindi ti reindirizzano alla pagina corretta.
ad esempio
http://en.wikipedia.org/wiki/Polish_prisoners_of_war#19 a>
ti reindirizza all'argomento corretto che è
http://en.wikipedia.org/wiki/Polish_prisoners_of_war_in_Un_## a>
Nota l'aggiunta della parola " il " ;.
A questo punto devo determinare se si è verificato o meno un reindirizzamento. Qualcuno può suggerire come potrei farlo?
Grazie!
Aggiorna
Ho contrassegnato la risposta di seguito come risposta perché tecnicamente è così che dici se sei stato reindirizzato. Il problema che sto riscontrando è che Wikipedia non sta effettivamente eseguendo un reindirizzamento rigido con i codici di risposta http 3xx. Stanno facendo reindirizzamenti soft che offrono contenuti diversi sotto lo stesso URL. Dovrò trovare un'altra soluzione.
Soluzione
Prova questo:
if(reponse.ResponseUri != request.RequestUri) {
//You were redirected
}
Altri suggerimenti
Esiste una proprietà chiamata " AllowAutoRedirects " sull'oggetto HttpWebRequest. Se lo disattivi puoi seguire tu stesso i reindirizzamenti.
Puoi anche provare a controllare HttpWebResponse. ResponseUri .
Utilizza HttpWebRequest.Address proprietà, definita esplicitamente come "l'URI dopo che tutti i reindirizzamenti che si verificano durante la richiesta sono completi"
Nota che questo dovrebbe essere usato al posto del HttpWebResponse.ResponseUri , come dice la sua documentazione:
Applicazioni che devono accedere all'ultimo ResponseUri reindirizzato dovrebbe utilizzare HttpWebRequest .. :: .. Indirizzo proprietà anziché ResponseUri, poiché l'uso della proprietà ResponseUri può aprire la sicurezza vulnerabilità.