HttpWebRequest.Address vs HttpWebResponse.ResponseUri
-
20-09-2019 - |
Question
Quelle est la différence entre ces deux propriétés?
Pour mettre en contexte, je déterminer si une redirection se produit si notre ResponseUri! = RequestUri.
Alors qu'une redirection se produit quel que soit le http://adage.com/adages/article? article_id = 140560 fournira un autre ResponseUri ( http://adage.com/adages/post .php ) que l'adresse ( http://adage.com/adages/post ? article_id = 140560 ).
Il semble que le ResponseUri prend l'en-tête Content-Lieu et l'utilise alors l'adresse maintient l'emplacement correct.
Serait-il correct de comparer le RequestUri au HttpWebRequest.Address pour vérifier réoriente?
La solution
Oui, en comparant request.RequestUri
et request.Address
est le chemin à parcourir. Au moins dans Mono response.ResponseUri
est le même que request.Address
.
Autres conseils
Je sais que c'est une vieille question, mais je l'ai trouvé en faisant des recherches à ce sujet et a remarqué qu'il n'a pas été fait correctement répondu.
Alors que HttpWebRequest.Address
et HttpWebResponse.ResponseUri
devrait toujours le même, voici la différence:
-
HttpWebResponse.Address
retourne le Uri de la page fait répondre -
HttpWebResponse.ResponseUri
retourne la valeur de l'en-tête deContent-Location
(le cas échéant). Bien que la documentation ne dit pas explicitement ce qui se passe si l'en-tête deContent-Location
n'est pas présent, on suppose qu'il utilisera la même valeur queAddress
.
Rappelez-têtes HTTP peuvent être falsifiés, de sorte que Microsoft recommande d'utiliser Address
au lieu de ResponseUri
pour des raisons de sécurité.
http://msdn.microsoft.com/ fr-fr / bibliothèque / system.net.httpwebresponse.responseuri.aspx
Avez-vous pensé à mettre request.AllowAutoRedirect = false et réémission la demande sur une redirection?
La comparaison Uri devrait également très bien, même si je ne suis pas sûr de tous les cas de pointe