是response.redirect总是一个http GET响应?

时间:2011-01-29 12:29:46

标签: asp.net http redirect get response

是response.redirect总是一个http GET响应?或者它可能是POST?....

5 个答案:

答案 0 :(得分:4)

在大多数API中,标准重定向实现执行302,实际上是每个定义GET。根据您的问题历史,您熟悉ASP.NET,但我也会为Java Servlet添加示例。

ASP.NET:

Response.Redirect("http://google.com");

的Servlet

response.sendRedirect("http://google.com");

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

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

ASP.NET:

Response.Status = "307 Temporary Redirect";
Response.AddHeader("Location", "http://google.com");

的Servlet

response.setStatus(307);
response.setHeader("Location", "http://google.com");

请注意,这会在普通客户端发出安全/确认警告,请求最终用户确认将POST数据发送到其他位置。

答案 1 :(得分:2)

假设您使用的是asp.net,也许server.transfer可能就是您要搜索的内容。您可以将处理传递到另一个页面并保持表单状态,而不是将新URL发送回客户端。

答案 2 :(得分:1)

Response.redirect只使用GET ..它不能是一个帖子......而且在什么语言之间?

答案 3 :(得分:1)

重定向是发送给客户端的Http响应。响应包含一个名为Location的Http Header,它必须包含一个绝对url。

然后,客户端针对此URL发出GET请求。

所以,不,POST不是一个选项。

此处有更多详情:http://en.wikipedia.org/wiki/URL_redirection

答案 4 :(得分:0)

与此处的大多数答案相反,重定向的HTTP请求仅 如果...

  • 原始请求是GET,或者
  • 状态码为303,或
  • 状态码为301或302,原始请求为POST。