是response.redirect始终是http GET响应吗?

Rod*_*iko 1 asp.net redirect get http response

是response.redirect始终是http GET响应吗?否则可能是POST?

Bal*_*usC 5

在大多数API中,标准重定向实现会执行302(确实是按定义GET)。根据您的问题历史记录,您熟悉ASP.NET,但是我还将添加Java Servlet的示例。

ASP.NET:

Response.Redirect("http://google.com");
Run Code Online (Sandbox Code Playgroud)

Servlet:

response.sendRedirect("http://google.com");
Run Code Online (Sandbox Code Playgroud)

它隐式地将响应状态设置为302,并将Location标头设置为给定的URL。

当前请求是POST请求并且您要使用POST重定向时,则需要307重定向。这不是标准API所提供的,但通常只需设置适当的响应状态和标头即可。

ASP.NET:

Response.Status = "307 Temporary Redirect";
Response.AddHeader("Location", "http://google.com");
Run Code Online (Sandbox Code Playgroud)

Servlet:

response.setStatus(307);
response.setHeader("Location", "http://google.com");
Run Code Online (Sandbox Code Playgroud)

请注意,这将在普通客户端上发出安全/确认警告,该警告请求最终用户进行确认以将POST数据发送到另一个位置。