【问题标题】:Appengine: Django static serve: prevent directory listingAppengine:Django静态服务:防止目录列表
【发布时间】:2013-09-11 16:11:03
【问题描述】:

我的 django 应用程序(托管在 appengine)中有一个 /static/ 子目录,用于提供图像、.js 和 .css 文件(使用 django.views.static.serve)。

我想阻止在该子目录中列出目录,但 .htaccess 似乎不起作用。我该怎么做?

【问题讨论】:

    标签: django .htaccess google-app-engine static


    【解决方案1】:

    这个问题有很多困惑。

    .htaccess 是 Apache Web 服务器的一项功能,因此它自然无法在非 Apache 提供服务的站点上运行。

    django.views.static.serve 是一种提供文件的方法,仅用于开发。不得在生产站点中使用它 - 事实上,正如 the documentation 所述,如果 DEBUG 为 False,它甚至都不起作用。

    App Engine 有自己的方法通过处理程序路径configured in app.yaml 提供静态资产,这就是您应该为 App Engine 应用程序使用的方法。无论如何,此方法不支持目录列表。

    【讨论】:

    • 很奇怪。我在我的 settings.py 中使用 DEBUG = os.environ.get('SERVER_SOFTWARE','').startswith('Development') ,它似乎对调试模式有用。我的 app.yaml 中没有静态处理程序,但 django.views.static.serve 即使在已部署的应用程序中也适用于静态文件。我在 app.yaml 中添加了处理程序,但目录列表仍然可用...
    • 好的,我把新的处理程序放在我的处理程序声明的顶部,它现在可以工作了。无论如何,django.views.static.serve 正在生产环境中工作(DEBUG=False)。我会将其更改为 appengine 处理程序。谢谢你的回答。
    • 有趣 - 尽管文档中反复发出警告,但实际上似乎没有任何代码强制执行它。诡异的。尽管如此,您仍然不应该在生产环境中使用它(即使是在非 App Engine 网站上),因为它效率低且不安全。
    • 确实如此。我改变了它,生产似乎更快,响应更快。由于 appengine 重写了一些 django 原语,因此很难猜测 static.serve 代码背后的人是谁。无论如何,你是对的,它应该被禁止(如文档中所述)。
    猜你喜欢
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多