回答
使用表格可能是您唯一的選擇作爲鏈接,HTTP重定向和<meta http-equiv="refresh" >
只會導致瀏覽器使用GET方法加載另一個URL。
儘管您不一定要使用JavaScript來提交表單。如果某些用戶交互是可接受的,則可以使用帶有一些<input type="hidden">
字段的表單,並讓用戶按提交按鈕。
您可能還希望確保您重定向到的頁面尚未接受GET參數。 某些腳本不分青紅皁白地接受GET和POST。
JavaScript是唯一的方法(自動執行)。您無法通過標準http
方法重定向POST
請求。你確定GET
不是這裏的選項嗎?
只需將HTML表單的操作URL設置爲特定的外部網站即可。
下面是一個SSCCE,只是copy'n'paste'n'run它:
<!doctype html>
<html lang="en">
<head>
<title>SO question 2604530</title>
</head>
<body>
<form action="http://stackoverflow.com/questions/2604530/answer/submit" method="post">
<textarea name="post-text"></textarea>
<input type="submit" value="Post Your Answer">
</form>
</body>
</html>
你會看到,#2具有良好的CSRF保護;)
這不是很清楚你的意思是,讓我們先來幾個可能性:
用戶應該張貼的形式不是您自己的服務器
非常容易,只要指定目標作爲表單動作:
<form action="http://someotherserver.com" method="post">
用戶一個成功的POST之後重定向提交
簡單,接受和處理POST數據像往常一樣,然後用
302
或303
重定向標題進行響應。用戶應該POST數據到您的服務器,並驗證後,你要發佈的數據到另一臺服務器
有點難,但三個選項:
- 你的服務器接受POST數據,當用戶等待響應時,您建立到另一個服務器的連接,發佈數據,接收響應,然後向用戶返回答案。
- 你用一個
307
重定向來回答,這意味着用戶應該在另一個地址嘗試相同的請求。理論上這意味着瀏覽器應該將相同的數據發送到另一臺服務器。我不太清楚這是多麼的支持,但任何瀏覽器理解HTTP1.1應該能夠做到這一點。 AFAIA在實踐中並沒有經常使用。
PS:該規範說明,307 POST重定向需要至少被用戶確認。唉,顯然這裏沒有瀏覽器堅持規範。 IE只是重複請求(所以它適用於你的目的),但Firefox,Safari和Opera似乎放棄了POST數據。因此,這種技術不幸是不可靠的。 - 使用技術#1結合隱藏的表單域,在兩者之間添加一個步驟。
在這裏看到的所有HTTP重定向選項的列表:http://en.wikipedia.org/wiki/Http_status_codes#3xx_Redirection
我碰巧知道在FF19上重定向307會導致確認對話框出現。不確定早期版本。 – rahulmohan 2013-05-10 20:26:09
- 1. 請求重定向使用
- 2. 在POST請求中重定向到URL
- 3. Facebook SDK好友請求重定向?
- 4. 將HTTP POST請求重定向到asp.net中的HTTPS POST請求Mvc
- 5. Post方法使用Python中請求
- 6. 使用Ajax方法讀取POST請求
- 7. 在使用nsurlconnection重定向後獲取http請求方法SynchronousRequest
- 8. 用POST方法重定向javascript頁面
- 9. 重定向請求
- 10. 使用硒重定向http請求
- 11. Slim POST方法和AngularJs Http POST請求
- 12. 使用Fiddler向WebApi發送POST請求
- 13. 如何重定向和與POST方法
- 14. 最好的重定向方法?
- 15. 我如何重定向到來自GAE POST請求的GET請求
- 16. 我可以將POST請求重定向到routes.rb中的外部GET請求嗎?
- 17. 使用參數重定向POST/GET請求的Sinatra應用程序
- 18. 重定向使用servlet和請求「的setHeader」法不工作
- 19. Spring Boot通過Catalina連接器將POST請求重定向到https端口時,請求方法GET不支持
- 20. POST請求正在調用doGet方法
- 21. 如何使用DefaultRedirectStrategy的「POST」方法重定向?
- 22. 如何使用HttpClient處理post方法中的重定向?
- 23. 尋找在Rails站點中重定向aspx請求的方法
- 24. Laravel 5.4重定向從請求對象的方法
- 25. 重定向網絡請求
- 26. 重定向網絡請求
- 27. Symfony重定向請求
- 28. 重定向ajax請求
- 29. 重定向HTTP請求
- 30. 重定向圖像請求
你能澄清你的意思嗎?你想發送/轉發POST數據到另一臺服務器?您希望用戶瀏覽器在發佈請求後重定向?別的東西...? – deceze 2010-04-09 02:49:14