我正在使用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
答案 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
。因此,用户可以访问的内容由您决定。