python - HTTP 303 (SeeOther) : GET Works, POST 失败

标签 python http http-headers web.py

我正在尝试执行一个简单的操作:

  1. POST 到 URL
  2. 返回 HTTP 303 (SeeOther)
  3. 从新 URL 获取

据我所知,这是一个非常标准的做法: http://en.wikipedia.org/wiki/Post/Redirect/Get

此外,SeeOther 似乎设计为以这种方式工作: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.4

我使用 web.py 作为我的服务器端 Controller ,但我怀疑这不是问题所在。如果我 GET,SeeOther 将按预期完美运行。如果我 POST 到相同的 URL,浏览器根本无法重定向或加载任何内容。

以为是浏览器问题,我尝试了 IE9 和 Google Chrome(v23 左右)。两者都有相同的问题。

考虑到 web.py 可能无法正确提供页面或生成错误的 URL,我使用 telnet 检查 header 。我发现了这个:

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

另一件可能会影响工作的事情: 我正在使用 mod-rewrite 以便用户可见的 domain.com/Users/1 实际上是 domain.com/control.py/Users/1

我可能有更多信息/疑难解答,但我现在一片空白。

问题:

为什么这适用于 GET 请求,而不适用于 POST 请求?我是否在某处缺少响应 header ?

编辑:

使用 IE9 开发人员工具和 Chrome 的检查器,看起来 303 在 POST 后没有返回到浏览器。但是,当我发出 GET 请求时,我可以看到 303 进来。

然而,在更仔细地查看 Chrome 的检查器之后,我看到了记录每个请求的能力(不要清除每个页面调用)。这让我看到出于某种原因,我的 POST 请求看起来失败了。同样 - GET 工作得很好。

最佳答案

这完全有可能不是您的问题,但由于您没有发布代码,我会试一试(以防万一)。

由于您使用的是 web.py,您是否在对象上定义了 POST 方法?

urls = (
    '/page', 'page'
)

class page:

    def POST(self):
        # Do something

    def GET(self):
        # Do something else

关于python - HTTP 303 (SeeOther) : GET Works, POST 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14024855/

相关文章:

java - 使用 .pem 文件在 java 中发送 https 请求

html - 单个站点中的多个 X-UA-Compatible 元标记

http - REST:更正被忽略的 POST 的 HTTP 响应代码

C:HTTP头解析

php - 是头 ('Content-Type:text/plain' );有必要吗?

javascript - angular 7 不按要求发送 header

python - 废弃发电机持有的资源会怎样?

python - python线程中的内存使用是否受到限制?

python - 在 Django 模板中减去 2 个整数

python - python 中的多线程与循环