Что именно Response.Redirect ("~ / ...") вставляет в ответ HTTP? - PullRequest
3 голосов
/ 24 ноября 2010

Я только что закончил читать URL против URI против URN, в более кратких терминах , и это действительно помогло понять различие между этими тремя терминами. С тех пор я снял спецификации RFC2141 и RFC2616 и документацию Microsoft Response.Redirect , чтобы ответить на следующий вопрос уверенно.

С учетом этой строки кода:

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

И этот полученный HTTP-ответ (обрезанный по контексту):

Статус = Найдено - 302 Дата = Ср, 24 ноября
2010 17:27:58 GMT
Server = Microsoft-IIS / 6.0
X-Powered-By = ASP.NET
X-Сеть САШ-Version = 2.0.50727
Местоположение = / MyWebApp / Foo.aspx

Какое имя (имена) наиболее правильно описывает то, что было помещено в заголовок "Location"?

URL? URI? URN? URC? Что это?

Ответы [ 5 ]

2 голосов
/ 24 ноября 2010

Это относительный URI.

Это также URL-адрес, поскольку его можно использовать в этом контексте как для поиска ресурса, так и для его идентификации, но на самом деле в наши дни мало что говорит об URL-адресах - различие заключается скорее в том, что вы делаете с это больше, чем само по себе, и URL всегда является URI.

1 голос
/ 24 ноября 2010

Это сложный вопрос. Сам по себе (в виде строки) Location является URI, но вы должны принять во внимание контекст, в котором он определен (то есть список заголовка ответа) По сути, кортеж (browser :: request :: protocol, browser :: request :: domain, response :: locationHeader) образует URL, поскольку запрос добавляет механизм поиска.

0 голосов
/ 24 ноября 2010

~ / разрешается в /MyWebApp/Foo.aspx, который не объявляет задействованный механизм HTTP; все, что он объявляет, - это местоположение, на которое перенаправляется, что делает его URL-адресом, хотя в нем явно не указывается http: //.

0 голосов
/ 24 ноября 2010

URL в свойстве заголовка Location является корневым URL.~ / Указывает, что URL-адрес, создаваемый с помощью ~ / foo.aspx, должен быть корневым относительно каталога приложения в IIS.

0 голосов
/ 24 ноября 2010

Это URL, поскольку разрешение ~/ предоставляет и местоположение, и механизм («http») для поиска ресурса, однако значение заголовка Location рассчитано на Uri. Определения полей заголовка

...