2011-01-29 65 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發送回客戶端。