3

我刚刚在更简洁的术语中读完了URL vs. URI vs. URN,它确实有助于理解这三个术语之间的区别。从那时起,我浏览RFC2141RFC2616规范以及 Microsoft 的 Response.Redirect Method文档,以便自信地回答以下问题。

鉴于这行代码:

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

这个产生的 HTTP 响应(根据上下文进行了修剪):

状态=找到 - 302 日期=2010 年 11 月 24 日星期三
17:27:58 GMT
服务器=Microsoft-IIS/6.0
X-Powered-By=ASP.NET
X-AspNet-Version=2.0.50727
位置=/MyWebApp/Foo。 aspx

什么名称最恰当地描述了“位置”标题中的内容?

网址?网址?瓮?尿酸?它是哪一个?

4

5 回答 5

2

这是一个相对 URI。

它也是一个 URL,因为它可以在这种情况下用于定位资源以及识别它,但实际上现在谈论 URL 几乎没有价值 - 区别更多的是你在用它做什么而不是什么它本身就是一个 URL,并且 URL 始终是一个 URI。

于 2010-11-24T17:46:41.590 回答
1

这是一个棘手的问题。就其本身(作为字符串)而言,Location 是一个 URI,但您必须考虑定义它的上下文(即响应头列表)本质上是一个元组(browser::request::protocol,browser: :request::domain, response::locationHeader) 构成一个 URL,因为 request 增加了检索机制。

于 2010-11-24T18:03:54.450 回答
0

它是一个 Url,因为它的解析~/提供了位置和机制(“http”)来查找资源,但是,标头值 Location 被设计为采用 Uri。

标题字段定义

于 2010-11-24T17:39:31.307 回答
0

~/ 被解析为 /MyWebApp/Foo.aspx,它没有声明所涉及的机制是 HTTP;它所声明的只是被重定向到的位置 - 这使它成为一个 URL,尽管它没有明确说明 http:// 在那里。

于 2010-11-24T17:43:49.767 回答
0

Location 标头属性中的 URL 是相对于根的 URL。~/ 指定使用 ~/foo.aspx 创建的 URL 应该相对于 IIS 中的应用程序目录是根目录。

于 2010-11-24T17:44:01.957 回答