位置: 编程技术 - 正文

Python的Flask框架及Nginx实现静态文件访问限制功能(flask框架官方文档)

编辑:rootadmin

推荐整理分享Python的Flask框架及Nginx实现静态文件访问限制功能(flask框架官方文档),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:flask框架图,python flask框架 web服务器,python flask框架 web服务器,flask框架官方文档,python flask框架 web服务器,flask框架官方文档,flask 框架,Python的flask框架教程,内容如对您有帮助,希望把文章链接给更多的朋友!

Nginx配置

Ngnix,一个高性能的web服务器,毫无疑问它是当下的宠儿。卓越的性能,灵活可扩展,在服务器领域里攻城拔寨,征战天下。

静态文件对于大多数website是不可或缺的一部分。使用Nginx来处理静态文件也是常见的方式。然而,一些静态文件,我们并不像任何情况下都公开给任何用户。例如一些提供给用户下载的文件,一些用户上传的涉及用户隐私的图片等。我们我希望用户登录的情况下可以访问,未登录的用户则不可见。

粗略的处理,在后端程序可以做过滤,渲染页面的时候,在视图逻辑里面验证用户登录,然后返回对应的页面。例如下面的flask代码(伪代码)

可是这样的处理,还有一个问题,静态文件是交给 nginx 处理的,如果hacker找到了文件的绝对地址,直接访问 Nginx 的一个小功能----XSendfile。 其原理也比较简单,大概就是使用了请求重定向。

我们知道,如果用Nginx做服务器前端的反向代理,一个请求进来,nginx先补捉到,然后再根据规则转发给后端的程序处理,或者直接处理返回。前者处理一些动态逻辑,后者多是处理静态文件。因此上面那个例子中,直接访问静态文件的绝对地址,Nginx就直接返回了,并没有调用后端的 user_idcard_page做逻辑限制。

为了解决这个问题,nginx提供的 XSendfile功能,简而言之就是用 internal 指令。该指令表示只接受内部的请求,即后端转发过来的请求。后端的视图逻辑中,需要明确的写入X-Accel-Redirect这个headers信息。

伪代码如下:

Python的Flask框架及Nginx实现静态文件访问限制功能(flask框架官方文档)

经过这样的处理,就能将静态资源进行重定向。这样的用法还是比较常见的,很多下载服务器可以通过这样的手段针对用户的权限做下载处理。

Flask

Flask是我喜欢的web框架,Flask甚至实现了一个 sendfile的方法,比上面的做法还简单。我用vagrant作了一个虚拟机,用Flask实现了上面的需求,具体代码如下:

项目结构

nginx的配置 nginx conf

web.conf

Flask 代码

app.py

简单部署

Python的string模块中的Template类字符串模板用法 string.Template()string.Template()内添加替换的字符,使用"$"符号,或在字符串内,使用"${}";调用时使用string.substitute(dict)函数.可以通过继承"string.Template",覆盖变量d

Python中的字符串替换操作示例 字符串的替换(interpolation),可以使用string.Template,也可以使用标准字符串的拼接.string.Template标示替换的字符,使用"$"符号,或在字符串内,使用"${}";调用时使

Python实现带百分比的进度条 大家在安装程序或下载文件时,通常都能看到进度条,提示你当前任务的进度。其实,在python中实现这个功能很简单,下面是具体代码。在实际应用中

标签: flask框架官方文档

本文链接地址:https://www.jiuchutong.com/biancheng/387650.html 转载请保留说明!

上一篇:总结网络IO模型与select模型的Python实例讲解(总结网络io模型的特点)

下一篇:Python的string模块中的Template类字符串模板用法(python string包)

  • 小规模增值税附表一怎么填
  • 企业所得税的纳税义务人不包括下列哪类企业
  • 预付账款对方公式怎么算
  • 财务费用包含哪些项目
  • 员工在外出差的说说
  • 分公司注销需要总公司法人实名确认吗
  • 期初和期末余额均在借方的账户,一般属于
  • 残保金减免需要每月发放不低于本市最低工资标准是应发
  • 员工个人承担的保险分录
  • 核定征收企业有哪些
  • 社保基金会割肉操作吗
  • 企业转给法人的流程
  • 以提供劳务为主营业务的企业
  • 营业外支出计入
  • 公司用商标权作假违法吗
  • 企业所得税成本确认原则
  • 增值税 代销
  • 财产租赁合同印花税申报期限
  • 补交以前年度增值税和滞纳金怎么开票
  • 辞退福利税前扣除标准
  • 资产总额小于所有者权益合计
  • 分担总部费用
  • 企业资产转移是什么意思
  • 员工的罚款计入什么科目
  • 免税收入要减去吗
  • php中运算符
  • 去年的发票忘记入账怎么处理
  • 苹果客服人工24小时
  • 材料发票入账
  • 税务自查补税后还有风险吗
  • 分配税后利润会计分录
  • php获取目录所有文件
  • php索引类型
  • 分包缴纳的个税怎么算
  • 公司向法人借款的借条怎么写
  • 【6G 新技术】6G数据面介绍
  • php对接公众号支付
  • 会计中利得的定义
  • 一般纳税人销售给小规模纳税人
  • 结算外单位收取的费用
  • 企业的管理费用占比
  • 合并报表的会计主体
  • Python解释器有哪些种类
  • mysql5.6.24
  • 投资款印花税的计税依据
  • 合伙律师事务所管理办法最新
  • 政府会计制度中累计盈余怎么计算
  • 计提租金如何做账务处理
  • 库存商品过期变成废品
  • 安装固定资产所消耗的材料费和人工费属于什么会计科目
  • 现金流量表每月要报吗
  • 外购的商品用于投分送
  • 行政单位的财务报表包括哪些
  • 国有资产无偿划转税收政策
  • 公司建立初期做账
  • windows mysql my.cnf
  • mysql数据查询慢
  • vultr vps搭建
  • Windows Server 2008:手足之争下的赢家
  • centos下安装gcc
  • 微软发布新系统
  • pvlsvr.exe - pvlsvr是什么进程 有什么用
  • win7蓝屏代码0x0000007e
  • WIN10系统更新怎么关闭
  • Win10 Mobile 10586.122 ROM安装包有多大?
  • unity接入安卓sdk
  • jquery右击事件
  • cocos2d教程
  • android点击按钮弹出对话框
  • python多进程编程
  • nodejs.
  • 批处理命令显示内容
  • Centos6.8下Node.js安装教程
  • unity接入google内购
  • jquery cookie用法
  • js中.html
  • 法制建设包括哪三个方面
  • 如何加强木材加工质量
  • 18个税种已立法数量
  • 对外销售产品
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设