我想不言而喻,我对以下几点感到困惑。这是我在这里查询的一个伪延续:HTTP 303 (SeeOther): GET Works, POST Fails我发布另一个问题,因为另一个问题主要处理HTTP重定向,而没有解决我现在认为的潜在问题。在
我有一个很简单的网页.py班级:
class user:
def GET(self, id):
"""List a single user"""
web.header('Cache-control', 'no-cache')
return 'wtf!!'
def POST(self, id):
"""Save an updated user"""
web.header('Cache-control', 'no-cache')
return 'wtf!!'
如果我从这个资源得到,我会收到我愚蠢的简单的“wtf!!”文本响应。在
如果我发布到这个资源,根据请求的来源,我会得到混合的结果。在
我想也许是网络浏览器添加了一些损坏的标题网页.py,我决定让Wireshark来调查。我发现客户总是及时收到回复。但是,我注意到Wireshark没有将POST请求的响应识别为HTTP(这是它对GET请求的响应所做的)。在
编辑: 我一直在测试/排除这个问题,我有更多的发展。在
GET和POST响应都以头“Transfer-encoding:chunked”返回客户端。这意味着它不会发送整个页面,而是在它们准备好的时候发送碎片。一般格式为:
^{pr2}$我用Wireshark找这些包。我注意到GET响应看起来应该如此,但是POST响应似乎缺少最后一个块。因此,连接会一直保持打开状态,直到超时(因为它希望来自服务器的数据更多)。在
以下是服务器端的请求。我不确定是哪一个负责“分块”数据。在
我现在的问题:
哪个组件实际上“分块”了我的请求?在
为什么它不能发送最后一个块(只用于POST响应)?在
我试图复制你的问题。一切都正常。在
班级:
对于URL:
urls = ( r'/user/?(\d*)', "User", )
当我在做POST(使用FF)时,一切都在起作用。在
你使用中间件吗?在
相关问题 更多 >
编程相关推荐