Python 静态目录是唯一可以通过URL直接访问的目录吗

Python 静态目录是唯一可以通过URL直接访问的目录吗,python,security,flask,Python,Security,Flask,这是一个关于资源安全的问题。如果我理解Flask的设计是正确的,我们可以访问资源,比如静态目录中的图像,URL为: https://{domain_name}/static/{image_name}.png 但我想确定的是,在默认设置下,任何其他目录是否都不能以相同的方式访问。也就是说,假设客户机希望访问另一个目录中的图像,例如图像,一般过程如下所示: 客户端向Flask服务器发送post/get请求,让程序知道它需要一些资源 Flask程序将通过客户端发送的post/get请求定位图像 Fl

这是一个关于资源安全的问题。如果我理解Flask的设计是正确的,我们可以访问资源,比如静态目录中的图像,URL为:

https://{domain_name}/static/{image_name}.png
但我想确定的是,在默认设置下,任何其他目录是否都不能以相同的方式访问。也就是说,假设客户机希望访问另一个目录中的图像,例如图像,一般过程如下所示:

  • 客户端向Flask服务器发送post/get请求,让程序知道它需要一些资源
  • Flask程序将通过客户端发送的post/get请求定位图像
  • Flask程序将检查客户端是否已登录并有权访问请求的映像。如果客户端未登录/未经授权,它可能会拒绝请求
  • 如果Flask程序认为一切正常,它会将请求的图像返回给客户端,并使用类似于
    return send_file(filename,mimetype='image/png')
  • 默认设置下,客户端不能简单地键入:
    https://{domain\u name}/images/{image\u name}.png
    来访问图像,也不能绕过Flask来访问图像

  • 这种理解正确吗?

    您的理解大体正确,但您首先不应该直接向Flask发送请求-反向代理或负载平衡器应该位于您的应用程序和外部世界之间。这可以直接为
    /static/
    的内容提供比Flask更高效的服务。谢谢@daveruinseverything,请您看看这个设置是否符合您所说的:我使用Apache作为网关。在内部,我的flask程序监听端口127.0.0.1:8888,Apache将外部443/80通信重定向到127.0.0.1:8888。这是否实现了你提到的目标?