我有一个在Tornado Web服务器上运行的Flask应用程序。我希望能够从客户端调用OPTIONS。我承认我不是百分之百,这是最好的方法。我找到this,并将其放入我的烧瓶应用程序中。这适用于除OPTIONS
之外的所有请求的开发服务器(仅限Flask)。当我将应用程序放在Tornado上时,我将其添加到我的龙卷风应用程序中:
class BaseHandler(tornado.web.RequestHandler):
def set_default_headers(self):
self.set_header("Access-Control-Allow-Origin", "*")
self.set_header("Access-Control-Allow-Credentials", "true")
self.set_header("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,OPTIONS")
self.set_header("Access-Control-Allow-Headers", "Content-Type, Authorization, Accept")
这将为除OPTIONS
以外的所有请求返回以下标头:
Access-Control-Allow-Headers:CONTENT-TYPE, AUTHORIZATION, ACCEPT
Access-Control-Allow-Methods:HEAD, GET, PUT, POST, OPTIONS, DELETE
Access-Control-Allow-Origin:*
Access-Control-Max-Age:21600
Content-Length:3493
Content-Type:text/html; charset=utf-8
Server:TornadoServer/3.1
但OPTIONS
只会返回:
Content-Type: text/html; charset=utf-8
Content-Length: 0
Allow: HEAD, GET, PUT, POST, OPTIONS, DELETE
Server: TornadoServer/3.1
将完整标题返回OPTIONS
怎么办?
答案 0 :(得分:1)
我最终取出了BaseHandler
课程,并在装饰工具中将provide_automatic_options
设置为False
并且有效。