#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 /…