2011-01-29 61 views
1

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

+0

您需要给我们一些上下文。什么是编程语言;什么是“响应”等 – 2011-01-29 12:33:21

+0

其asp.net,谢谢 – Rodniko 2011-01-31 07:32:23

+0

*其asp.net,谢谢*然后将其添加到您的问题。 – 2011-11-27 19:08:05

回答

4

在大多数API是标准重定向实现做了302这的确是按照定义GET。根据你熟悉的ASP.NET的问题历史记录,我也会为Java Servlets添加示例。

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数据发送到一个安全/确认警告另一个位置。

2

Response.redirect只使用GET..It不能是一个帖子..并且在两者之间是什么语言?

+0

http://stackoverflow.com/questions/46582/response-redirect-with-post-instead-of-get – kommradHomer 2012-04-30 10:00:53

2

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

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

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

更多细节在这里:http://en.wikipedia.org/wiki/URL_redirection

2

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