在金字塔,通过发送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。 –