【问题标题】:Tornado / Flask not responding correctly to OPTIONSTornado / Flask 没有正确响应 OPTIONS
【发布时间】:2013-07-12 12:42:36
【问题描述】:

我有一个在 Tornado 网络服务器上运行的 Flask 应用程序。我希望能够从客户端调用 OPTIONS。我承认我不是 100%,这是解决这个问题的最佳方式。我找到了this,并将其放入我的烧瓶应用程序中。这适用于除OPTIONS 之外的所有请求的开发服务器(仅限Flask)。当我将应用程序放在 Tornado 上时,我将其添加到我的 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

【问题讨论】:

    标签: python http http-headers flask tornado


    【解决方案1】:

    我最终取出了BaseHandler 类并在装饰器中将provide_automatic_options 设置为False,这样就可以了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-04
      • 2011-05-20
      • 2016-10-13
      • 2018-09-01
      • 1970-01-01
      • 2016-03-28
      • 2017-11-02
      • 1970-01-01
      相关资源
      最近更新 更多