2011-06-01 66 views
0

爲什麼位置未列在響應標題?c#HttpWebRequest標題

我的代碼:

 string url = "http://hehe.freevar.com/files.php"; 
     HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url); 
     req.Method = "HEAD"; 
     Console.WriteLine(req.GetResponse().Headers); 

回答

4

Wikipedia

的HTTP Location頭返回 在響應從HTTP服務器下 兩種情況:

  1. 要強制Web瀏覽器加載不同網頁。它是作爲由網絡服務器 響應的 一部分傳遞時所請求的URI具有:

    • 暫時移動,或
    • 永久移動

HttpWebRequest類有屬性AllowAutoRedirect默認爲true:

如果您希望 希望請求自動執行 遵循HTTP重定向標頭到 資源的新位置,請將AllowAutoRedirect設置爲true。

這意味着你永遠不會看到重定向請求,除非你發出請求之前設置AllowAutoRedirect爲false:

string url = "http://hehe.freevar.com/files.php"; 
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url); 
req.AllowAutoRedirect = false; 
req.Method = "HEAD"; 
Console.WriteLine(req.GetResponse().Headers); 

然後你會得到如下回應這不包括位置

Keep-Alive: timeout=1, max=10000 
Connection: Keep-Alive 
Content-Type: text/html 
Date: Wed, 01 Jun 2011 01:32:18 GMT 
Location: http://www.160by2.com/post-registration.aspx 
Server: Apache 
X-Powered-By: PHP/5.2.13 
2

我認爲你正在尋找ResponseUri財產。

var responseUri = req.GetResponse().ResponseUri; 
+0

+1取決於情況這可能是OP實際上正在尋找 – BrokenGlass 2011-06-01 01:49:38