我想执行一个简单的动作:
- POST到一个URL
- 返回HTTP 303(SeeOther)
- 来自新网址,以获取
从我可以告诉,这是一个非常标准的做法: http://en.wikipedia.org/wiki/Post/Redirect/Get
此外,它似乎SeeOther设计这样的工作方式: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.4
我使用web.py作为我的服务器端控制,但我怀疑这不是问题。 如果我得到的,完美的作品如预期SeeOther。 如果我张贴到相同的URL,浏览器无法重定向或加载在所有东西。
我以为这是一个浏览器的问题,我都尝试IE9和谷歌Chrome(V23 ISH)。 两者有相同的问题。
思考web.py可能会错误地服务页面,或产生不良URL,我用telnet来检查标头。 我找到了这个:
HTTP GET(这部作品在浏览器):
GET /Users/1 HTTP/1.1
HOST: domain.com
HTTP/1.1 303 See Other
Date: Mon, 24 Dec 2012 18:07:55 GMT
Server: Apache/2
Cache-control: no-cache
Location: http://domain.com/Users
Content-Length: 0
Content-Type: text/html
HTTP POST(这不会在浏览器中运行):
POST /Users/1 HTTP/1.1
HOST: domain.com
HTTP/1.1 303 See Other
Date: Mon, 24 Dec 2012 18:12:35 GMT
Server: Apache/2
Cache-control: no-cache
Location: http://domain.com/Users
Content-Length: 0
Content-Type: text/html
可能在作品被扔扳手另一件事:我使用的是国防部,重写使得用户可见domain.com/Users/1实际上是domain.com/control.py/Users/1
可能有更多的信息/疑难解答,我有,但我画一个空白,现在。
问题:
为什么用GET请求这项工作,而不是POST请求? 我缺少一个响应头的地方?
编辑:
使用IE9开发者工具和浏览器的检查,它看起来像303不回来了一个POST后,浏览器。 不过,我可以看到303进来时,我做一个GET请求。
然而,在Chrome的督察更加紧密地看后,我看到记录每个请求的能力(不清除瓦特/每个页面调用)。 这让我看到了,由于某种原因,我的POST请求看起来像它的失败。 再次 - GET作品就好了。