【问题标题】:C#: What is the difference between MovedPermanently and Moved in HttpStatusCodeC#:HttpStatusCode中MovedPermanently和Moved有什么区别
【发布时间】:2025-11-20 21:10:01
【问题描述】:

今天当我尝试在 web 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 的两个值之间有什么不同?

【问题讨论】:

  • @IanMercer 不一样,MovedPermanently 和 Moved 都是 301

标签: c# asp.net http asp.net-web-api


【解决方案1】:

根据MSDN文档:

已移动: 相当于 HTTP 状态 301。

Moved 表示请求的信息已被移动到 Location 标头中指定的 URI。收到此状态时的默认操作是遵循与响应关联的 Location 标头。

当原始请求方式为POST时,重定向请求将使用GET方式。

永久移动: 相当于 HTTP 状态 301。

MovedPermanently 表示请求的信息已移动到 Location 标头中指定的 URI。

收到此状态时的默认操作是跟随与响应关联的 Location 标头。

【讨论】:

  • 是真的吗?两者在 HTTP METHOD 中的期望相同,Moved 无论如何都会返回 GET,但 MovedPermanently 可能会返回 GET/POST 取决于主请求。
  • 是的。您可以从 MSDN 文档中找到相同的内容。
  • 不再是:“MovedPermanently 是 Moved 的同义词。” docs.microsoft.com/en-us/dotnet/api/…
最近更新 更多