C #: В чем разница между MovedPermanently и Moved в HttpStatusCode

#c# #asp.net #http #asp.net-web-api

#c# #asp.net #http #asp.net-web-api

Вопрос:

Сегодня, когда я попытался перенаправить действие в веб-api, я заметил, что существует два значения для перенаправления 301:

Значение 1:

 var response = Request.CreateResponse(HttpStatusCode.MovedPermanently);
response.Headers.Location = new Uri("http://www.example.com");
return response;
  

Значение 2:

 var response = Request.CreateResponse(HttpStatusCode.Moved);
response.Headers.Location = new Uri("http://www.example.com");
return response;
  

И теперь мой вопрос в том, какой из них лучше и в чем разница между двумя значениями HttpStatusCode ?

Комментарии:

1. @IanMercer Нет, это разные, оба MovedPermanently и Moved равны 301

Ответ №1:

Согласно документу MSDN:

Перемещено: эквивалентно статусу HTTP 301.

Перемещено указывает, что запрошенная информация была перемещена в URI, указанный в заголовке Location . Действие по умолчанию при получении этого статуса заключается в следовании заголовку Location, связанному с ответом.

Когда исходный метод запроса был POST, перенаправленный запрос будет использовать метод GET .

MovedPermanently: эквивалентно статусу HTTP 301.

MovedPermanently указывает, что запрошенная информация была перемещена в URI, указанный в заголовке Location .

Действие по умолчанию при получении этого статуса заключается в следовании заголовку Location, связанному с ответом.

Комментарии:

1. Это правда? Оба ожидаются одинаково в МЕТОДЕ HTTP, Moved возвращает GET в любом случае, но MovedPermanently может возвращать GET / POST в зависимости от основного запроса.

2. ДА. вы можете найти то же самое из MSDN документа.

3. Больше нет: «MovedPermanently является синонимом Moved». learn.microsoft.com/en-us/dotnet/api /…