2010-11-24 40 views
3

我剛讀完URL vs. URI vs. URN, in More Concise Terms,這真的有助於理解這三個術語之間的區別。從那時起,我已經撇號RFC2141RFC2616規格和微軟的Response.Redirect Method文件,努力自信地回答以下問題。Response.Redirect(「〜/ ...」)放在HTTP響應中的究竟是什麼?

鑑於這行代碼:

Response.Redirect("~/Foo.aspx"); 

這所得的HTTP響應(修剪上下文):

狀態=實測值 - 302日期=星期三,11月24日
2010 17: 27:58 GMT
Server = Microsoft-IIS/6.0
X-Powered-By = ASP.NET
X-AspNet-Version = 2.0.50727
位置=/MyWebApp/Foo.aspx

什麼名字(一個或多個)最恰當描述了已被置於 「位置」 頭?

URL? URI?甕? URC?這是什麼?

回答

2

這是一個相對URI。

這也是一個URL,因爲它可以在這個上下文中用來定位資源並識別它,但是現在真的沒有什麼價值在討論URL - 這個區別更多的是你在做什麼與它本身的內容相比,URL總是一個URI。

0

這是一個網址,因爲~/的分辨率提供了查找資源的位置和機制(「http」),但是標頭值位置旨在獲取Uri。

Header Field Definitions

+1

但是,我在問什麼是在*標題中的值,而不關心如何/在哪裏創建值。標題中的值不提供位置或機制。如果位置和機制是我想在我稱之爲「URL」的東西中觀察到的東西,而這些東西不在「位置」標題中,那麼我們稱之爲頭*中出現的值*? – lance 2010-11-24 17:46:50

+0

@lance - 修改我的回覆。這是一個Uri。 – Thomas 2010-11-24 17:50:29

0

〜/解析爲/MyWebApp/Foo.aspx,其不宣佈機制參與是HTTP;所有它聲明的是被重定向到的位置 - 這使得它成爲一個URL,儘管它沒有在那裏明確指出http://。

0

位置標題屬性中的URL是根相對URL。 〜/指定使用〜/ foo.aspx創建的URL應該是相對於IIS中的應用程序目錄的根。

1

這是一個棘手的問題。它本身(作爲一個字符串)Location是一個URI,但是你必須考慮它定義的上下文(即響應頭列表) 實質上,一個元組(browser :: request :: protocol,browser :: request :: domain,response :: locationHeader)構成一個URL,因爲請求添加了一個檢索機制。