位置: 编程技术 - 正文

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包)

  • 材料用于非应税项目
  • 一般纳税人报税流程详细操作
  • 综合年度自行申报后要怎么操作
  • 政府单位临聘人员辞退
  • 保险服务保费会计分录
  • 长期挂账的应付账款如何写申请报告
  • 会计凭证填制要求有哪些
  • 非同一控制下用什么法
  • 事业单位的股东是什么
  • 你如何界定成本与费用之间区别?
  • 固定资产买入
  • 增值税电子发票怎么开具流程
  • 五分钟了解外出经营活动税收管理证明
  • 小规模季度不超30万需要交什么税
  • 零售通收银
  • 税收征管法关于全款未收房的规定
  • 哪些银行承兑汇票比较好
  • 工程用的叉车计提折旧记到什么科目?
  • 劳务报酬的申报流程
  • 手动添加mac
  • 收到稳岗补贴计入哪个科目
  • mac睡眠后无法正常唤醒
  • php快速查找
  • 软件入无形资产金额
  • 高新企业政府补贴政策
  • 深入理解llvm
  • 企业长期资金的筹集方式
  • 资产负债表利润表的勾稽关系
  • vue学不懂怎么办
  • 轮播图效果用css怎么实现
  • pdf优化器在哪里
  • vue2和vue3的区别大么
  • phpcms怎么用
  • 资产基金的明细科目
  • python idle有什么用
  • python中mktime函数
  • mysql5.7.17在win2008R2的64位系统安装与配置实例
  • 工会经费计算表
  • 让渡资产使用权属于收入吗
  • 公司入股方式有哪几种
  • 报账单大写金额负数填写方式
  • 个人无需办理汇票业务
  • 职工福利费相关文件有哪些
  • 小微企业增资
  • 资产计提减值如何进行账面记录
  • 内退文件2018
  • 固定资产折旧的会计科目
  • 一年以上的借款是长期借款吗
  • 一定要正颌吗
  • 基金会对外捐赠,对方开什么发票
  • 固定资产折旧的影响因素
  • 建筑会计账务
  • mysql的操作
  • sqlserver复制表语句
  • 在查询结果中添加字母
  • 使用u盘安装windows10电脑识别不出来
  • ubuntu f7
  • SSDP Discovery Service 是什么可以禁用吗
  • 安全账户管理器或本地安全机构服务器
  • linux关闭sh
  • linux定时任务实现原理
  • win7系统开机黑屏只有鼠标且打不开任务管理器
  • 适配器模型
  • PHP+MySQL+jQuery随意拖动层并即时保存拖动位置实例讲解
  • ftp批量下载文件命令
  • Android In <declare-styleable> MenuView, unable to find attribute android:preserveIconSpacing
  • [android] listView解析
  • 如何编写一个完整的教学目标
  • nodejs require
  • jquery form序列化
  • javascript gui
  • js的类型有哪几种
  • html折叠
  • python文本文件操作步骤
  • js弹出对话框的命令
  • 浙江国税局电话客服热线
  • 湖北安徽是一个地方吗
  • 武汉市房产证契税 2023
  • 河南地税税率怎么计算
  • 交17000办的保险是什么保险
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设