• tornado接收ajax的post请求报错WARNING:tornado.access:405 OPTIONS /add


    后端报错信息

    WARNING:tornado.access:405 OPTIONS /add (::1) 1.00m

    前端报错信息

    2xhr.js?ec6c:172 OPTIONS http://localhost:8888/add 405 (Method Not Allowed)/#/:1 Access to XMLHttpRequest at 'http://localhost:8888/add' from origin 'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

    解决办法

    在代码中实现options方法并设置self.set_header('Access-Control-Allow-Headers', 'Content-Type')

    import tornado.ioloop
    import tornado.web
    import json
    
    
    class AddHandler(tornado.web.RequestHandler):
    
        def initialize(self):
            # self.request.method = 'POST'
            # print(self.request.method, type(self.request.method))
            self.set_default_header()
    
        def get(self):
            self.write("U get story id is ")
    
        def post(self):
            self.write(json.dumps({"sum": 'rrrrrr'}))
    
        def set_default_header(self):
            print("setting headers!!!")
            self.set_header('Access-Control-Allow-Origin', '*')
            # self.set_header('Access-Control-Allow-Origin', 'http://localhost:8080')
            # self.set_header('Access-Control-Allow-Headers', 'X-Requested-With')
            self.set_header('Access-Control-Allow-Headers', '*')
            self.set_header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, PATCH, OPTIONS')
            self.set_header('Content-Type', 'application/json; charset=UTF-8')
            self.set_header('Access-Control-Allow-Headers', 'Content-Type')
    
        def options(self):
            pass
    
    
    application = tornado.web.Application([
        (r"/add", AddHandler),
    ])
    
    if __name__ == "__main__":
        application.listen(8888)
        tornado.ioloop.IOLoop.instance().start()

    参考网址

    https://github.com/tornadoweb/tornado/issues/2104

    https://stackoverflow.com/questions/19006783/tornado-post-405-method-not-allowed?noredirect=1&lq=1

  • 相关阅读:
    数组方法的扩展,如map,reduce,fliter,forEach方法
    设计模式总体概括
    centos yum 安装 tomcat
    idea springboot 打包 war
    idea使用tomcat运行maven打包的war
    CentOS 7 用 yum 安装 Nginx
    CentOS更换yum源
    城市代码表mysql
    更改idea启动内存信息
    (三)多表代码生成
  • 原文地址:https://www.cnblogs.com/chen55555/p/11586431.html
Copyright © 2020-2023  润新知