我遇到了 Tornado 的问题。我在 Tornado 中有一个用于 PUT HTTP 方法的 API 端点。我还有一个 Web 应用程序,它使用 jQuery 和 AJAX 向此 API 发送请求,但我总是收到 405 响应,因为请求是作为 HTTP 方法选项进行的。 我了解它的工作方式,并且我确实配置了我的 Tornado 服务器以允许它。但即使这样我也有这种情况。 有人可以帮助我吗?
有我的服务器代码:
class BaseHandler(RequestHandler):
def __init__(self, *args, **kwargs):
super(BaseHandler, self).__init__(*args, **kwargs)
self.set_header('Cache-Control', 'no-store, no-cache, must- revalidate, max-age=0')
self.set_header("Access-Control-Allow-Origin", "*")
self.set_header("Access-Control-Allow-Headers", "Content-Type")
self.set_header('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS')
非常感谢
请您参考如下方法:
您需要添加一个 options
处理程序,它只发送没有正文的 header :
def options(self):
# no body
self.set_status(204)
self.finish()
参见 Tornado server: enable CORS requests获取完整的代码片段。
否则只需安装 the tornado-cors
package :
pip install tornado-cors
这将为您添加必要的处理程序,并确保发送正确的响应 header 。