[英]Tornado POST 405: Method Not Allowed
出于某种原因,我无法在龙卷风中使用 POST 方法。
当我将 GET 更改为 POST 时,即使hello_world
示例也不起作用。
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def post(self):
self.write("Hello, world")
application = tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
它抛出“405 方法不允许”。 有什么建议吗?
如果您想访问该页面,您仍然需要get
,因为使用带有GET
方法的浏览器请求访问该页面。
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def post(self):
self.write("Hello, world")
get = post # <--------------
application = tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
Falsetru 答案是一个有用的提示,是的,您需要的正是 get 方法。 但是不,我认为 get 和 post 方法的行为不应该相同。 这两种方法的语义是不同的。 请查看 HTTP 规范http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html并考虑 Brabster 对此问题的回答HTTP-Get 和 HTTP-POST 之间有什么区别,为什么是HTTP-POST 在安全性方面较弱。
(对不起,我的句子应该更好地评论 falsetru 答案,但我的声誉不允许)
最近,我遇到了同样的问题。 以下代码是我的解决方案:
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def set_default_headers(self):
print('set headers!!')
self.set_header('Access-Control-Allow-Origin', '*')
self.set_header('Access-Control-Allow-Headers', '*')
self.set_header('Access-Control-Max-Age', 1000)
self.set_header('Content-type', 'application/json')
self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
self.set_header('Access-Control-Allow-Headers',
'Content-Type, Access-Control-Allow-Origin, Access-Control-Allow-Headers, X-Requested-By, Access-Control-Allow-Methods')
def OPTIONS(self):
pass
def post(self):
self.write("Hello, world")
application = tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":`enter code here`
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.