谷歌应用程序引擎_method?
问题描述:
我如何才能将请求正文传递给我的视图?谷歌应用程序引擎_method?
class RestHTTPMiddleware(object):
def __init__(self, app):
self.app = app
def __call__(self, environ, start_response):
request = Request(environ)
environ['wsgi.input'] = StringIO.StringIO(request.body)
method = webapp.Request(environ).get('_method')
if method:
environ['REQUEST_METHOD'] = method.upper()
return self.app(environ, start_response)
当我测试:
def put(self):
logging.info("spot put %s", self.request.get("name"))
以下记录: “点放”,但没有价值。
这是它是如何实现的:
def main():
app = webapp.WSGIApplication([
(r'/spot/new/$', Spot),
],
debug=True)
# run_wsgi_app(application)
wsgiref.handlers.CGIHandler().run(RestHTTPMiddleware(app))
答
就快与此代码,我想。如果在Request实例创建后运行fp.seek(0)
,您是否尝试了解它是否有效?
我还应该注意,这是一个危险的黑客!这使我可以欺骗您的Web服务器,使其相信<img src="http://yourserver.com/?_method=POST&delete_account=1">
是来自查看我网站的用户的合法POST请求。显然:从安全角度来看这是危险的。 不要这样做,除非你确定你有其他机制抵消这个潘多拉盒子的CSRF噩梦。
你为什么要这么做?为什么不只是访问self.request.body? – 2010-09-13 10:09:42
我希望能够在webapp中使用put()和delete()方法,一种方法是使用形式为 – 2010-09-13 11:54:29
如果它是输入[type = hidden],则表示您将其设置为代码中的值。相反,将相应的方法设置为“