如何设置龙卷风服务器的路径

时间:2017-04-30 15:22:52

标签: python server tornado

我正在使用python tornado构建服务器。我的同事完成了前端部分。

我做了一个非常简单的测试,如下所示:

class IndexHandler(tornado.web.RequestHandler):
        def get(self):
            print("this is a get request from indexhandler:\n")
            print(self.request)
            self.render("frontend/index.html")

if __name__ == "__main__":
    tornado.options.parse_command_line()
    app = tornado.web.Application(handlers=[(r"/", IndexHandler)])
    http_server = tornado.httpserver.HTTPServer(app)
    http_server.listen(options.port)
    tornado.ioloop.IOLoop.instance().start()

对于此测试,浏览器获取500: Internal Server Error。因为index.html在子目录中包含一些js文件 以下是服务器的消息:

  

[I 170430 23:06:21 web:2063] 200 GET /(108.61.177.156)2.56ms
  [W 170430 23:06:22网址:2063] 404 GET /css/reset.css(108.61.177.156)0.56ms
  [W 170430 23:06:22网址:2063] 404 GET /css/common.css(108.61.177.156)0.56ms
  [W 170430 23:06:22 web:2063] 404 GET /css/index.css(108.61.177.156)0.41ms

这意味着浏览器获得index.html但无法获取css个文件。

所以我认为我需要做这样的事情:

self.render("frontend/*")

我试过这样但却失败了。

另外,如果我确实需要某种正则表达式来执行此操作,我认为这非常危险,因为用户可以通过浏览器执行此类请求:

  

www.mysite.com /../../ someLocalFileOfServer

1 个答案:

答案 0 :(得分:1)

你读过龙卷风的文件吗?只需查看此文档即可获得静态服务。 http://www.tornadoweb.org/en/stable/guide/running.html#static-files-and-aggressive-file-caching

更新

为什么会有危险?假设你有一个这样的项目:

project
--static_dir
----test.js
----some other static files
--view
----index.html
----some other view files
--server.py

您可以将static dir设置为static_dir,然后用户可以通过网址test.js访问domian/test.js。因此,用户可以访问的内容由您决定。