1

Whats the difference between these two properties?

To put into context, I am determining if a redirect occurs if our ResponseUri != RequestUri.

While a redirect occurs regardless the url http://adage.com/adages/article?article_id=140560 will provide a different ResponseUri (http://adage.com/adages/post.php) than the Address (http://adage.com/adages/post?article_id=140560).

It appears the ResponseUri takes the Content-Location header and uses it while the Address maintains the correct location.

Would it be correct to compare the RequestUri to the HttpWebRequest.Address to check for redirects?

Pat
  • 5,263
  • 1
  • 36
  • 53

3 Answers3

2

Yes, comparing request.RequestUri and request.Address is the way to go. At least in Mono response.ResponseUri is the same as request.Address.

Gonzalo
  • 20,805
  • 3
  • 75
  • 78
1

I know this is an old question, but I found it while researching this topic and noticed it wasn't actually answered correctly.

While HttpWebRequest.Address and HttpWebResponse.ResponseUri should always be the same, here is the difference:

  • HttpWebResponse.Address will return the Uri of the page actually responding
  • HttpWebResponse.ResponseUri will return the value of the Content-Location header (if present). While the documentation doesn't explicitly state what happens if the Content-Location header is not present, it is assumed it will use the same value as Address.

Remember HTTP headers can be forged, so Microsoft recommends using Address instead of ResponseUri for security reasons.

http://msdn.microsoft.com/en-us/library/system.net.httpwebresponse.responseuri.aspx

Rick
  • 1,863
  • 2
  • 19
  • 46
0

Have you thought about setting request.AllowAutoRedirect=false and then reissuing the request on a redirect?

The Uri comparison should also work fine, although I am not sure of all the edge cases

feroze
  • 7,380
  • 7
  • 40
  • 57
  • I have considered setting the AllowAutoRedirect to false, however if I am able to handle the redirect with the current comparison I would venture for that. – Pat Nov 18 '09 at 20:19