2009-11-18 24 views
1

Quelle est la différence entre ces deux propriétés? Pour mettre en contexte, je suis en train de déterminer si une redirection se produit si notre ResponseUri! = RequestUri.HttpWebRequest.Address vs HttpWebResponse.ResponseUri

Alors qu'une redirection se produit quel que soit l'URL 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 utilise l'en-tête Content-Location et l'utilise alors que l'adresse conserve l'emplacement correct.

Serait-il correct de comparer le RequestUri au HttpWebRequest.Address pour vérifier les redirections?

Répondre

2

Oui, comparaient request.RequestUri et request.Address est le chemin à parcourir. Au moins en Monoresponse.ResponseUri est la même que request.Address.

0

Avez-vous pensé à la configuration de request.AllowAutoRedirect = false, puis de réémettre la requête 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

+0

J'ai envisagé de mettre la AllowAutoRedirect false, si je suis en mesure de gérer la redirection avec la comparaison actuelle, je me risquerais pour cela. – Pat

1

Je sais que c'est une vieille question, mais je l'ai trouvé en recherchant ce sujet et j'ai remarqué qu'il n'avait pas vraiment répondu correctement.

Alors que HttpWebRequest.Address et HttpWebResponse.ResponseUridevrait toujours le même, voici la différence:

  • HttpWebResponse.Address retournera Uri de la page en fait répondre
  • HttpWebResponse.ResponseUri renverra la valeur de l'en-tête Content-Location (si présent). Bien que la documentation n'indique pas explicitement ce qui se passe si l'en-tête Content-Location n'est pas présent, il est supposé qu'il utilisera la même valeur que Address.

en-têtes HTTP souvenir 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/en-us/library/system.net.httpwebresponse.responseuri.aspx