在金字塔,通過發送GET請求可以通過完成創建網址是這樣的:如何通過POST在金字塔中提交請求?
@view_config(route_name="test")
def test(request):
return HTTPFound("http://test.com/redirect_to_another_test?a=1")
但似乎HTTPFound
不能做到這一點的POST,那我該怎麼做呢? 有沒有人有關於此的想法?謝謝!
在金字塔,通過發送GET請求可以通過完成創建網址是這樣的:如何通過POST在金字塔中提交請求?
@view_config(route_name="test")
def test(request):
return HTTPFound("http://test.com/redirect_to_another_test?a=1")
但似乎HTTPFound
不能做到這一點的POST,那我該怎麼做呢? 有沒有人有關於此的想法?謝謝!
你不能在金字塔或任何其他服務器端框架或語言中做到這一點。
您的示例代碼未顯示錶單提交,代碼顯示HTTP重定向。它指示瀏覽器訪問另一個URL,換句話說,告訴瀏覽器重新提交請求。
這個堆棧溢出問題討論了這個相同的概念,雖然在ASP而不是Python - Response.Redirect with POST instead of Get?
如果你要通過GET或POST「提交請求」的金字塔,你將不得不使用圖書館像urllib2
, requests
,或類似的。在這些情況下,圖書館會讓金字塔服務器充當請求的「提交者」。
如果你想讓用戶/網頁瀏覽器通過POST提交請求,你將不得不做一些花哨的腳步/詭計,使瀏覽器做到這一點。
可能的方式來實現這一目標將包括:
你不能在任何服務器端語言,請告訴瀏覽器通過POST重新提交請求。瀏覽器不能像那樣工作。
您應該也知道,「大多數瀏覽器」通常會解釋通過GET獲取的任何重定向請求 - 即使原始文件是POST。這不是規範 - 某些重定向代碼應該保留一個POST POST - 但瀏覽器不遵循所有規格。也沒有HTTP狀態代碼或命令來有目的地從GET切換到POST。
你想達到什麼目的? HTTPFound只是將瀏覽器重定向到一個新的URL(請參閱http://en.wikipedia.org/wiki/HTTP_302),然後使用GET請求新的URL。如果原始請求是POST,您可以嘗試使用「See Other」(http://en.wikipedia.org/wiki/HTTP_303),但在我看來,您仍嘗試做一些奇怪的事情:) –
我想將請求發佈到URL,然後重定向到該URL,就像在頁面中的POST表單一樣,您可以在提交表單後轉到該URL。 –