惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
Jina AI
Jina AI
J
Java Code Geeks
Microsoft Security Blog
Microsoft Security Blog
Recent Announcements
Recent Announcements
I
InfoQ
L
LangChain Blog
The Cloudflare Blog
IT之家
IT之家
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog
A
About on SuperTechFans
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Last Week in AI
Last Week in AI
Blog — PlanetScale
Blog — PlanetScale
罗磊的独立博客
云风的 BLOG
云风的 BLOG
Microsoft Azure Blog
Microsoft Azure Blog
Engineering at Meta
Engineering at Meta
F
Fortinet All Blogs
博客园 - 聂微东
美团技术团队
博客园_首页

博客园 - Shapley

项目心得 进程间通讯方式 C#使用MCP协议调用大模型示例 SQL Server LEAD函数实践 sql server行专列一例 数据库字段排序方法两则 Sql Server生成ULID例子 审批流进化记 winform+Task+async 献丑贴:Task.Run中foreach优化 Sql Server Begin TRY sample No service for type 'Microsoft.AspNetCore.Mvc.ViewFeatures.Filters.ValidateAntiforgeryTokenAuthorizationFilter' has been registered. 某低代码平台自定义控件技术点 Element-plus的el-date-picker控件动态切换中英文方案 Chrome浏览器无法查看页面跳转前的请求日志及解决办法 element-plus上传视频并生成缩略图(封面)方案 JWT自动刷新草案 Ajax方法POST的两种提交方式 Sql Server变量声明及使用技巧 修改Dify的Nginx对外访问端口 Task with Console(with SemaphoreSlim) Task实战 asp.net core 9.0发布centos7.9 Barrier CountdownEvent
H5项目在微信浏览器运行实录
Shapley · 2025-07-01 · via 博客园 - Shapley

技术点:

一.解决H5页面在微信浏览器中不能下载附件问题

解决办法:

1.在H5系统内的相关页面,点击某个按钮,如【附件下载】时,先生成一个随机码,随机码在后台存储,有一定的生存期,超过生存期随机码会被系统清理。

2.步骤一完成后用户携带此随机码打开附件查看与下载页面,此页面为系统外页面,不检查用户是否登录等信息,而仅仅通过随机码在后台进行是否存在判断,若随机码还存在,则输出附件列表及下载功能;若不存在,则给于用户提示:页面已失效。

3.下载页面加载完成后,对浏览器进行判断,若为微信浏览器,则给出【点击右上角...,用系统浏览器打开即可下载附件】等相关提示,引导用户使用手机默认浏览器打开,若为非微信浏览器,则不予提示。

4.若用户复制了下载页面地址,过一段时间后想通过地址打开页面获取附件,则由于地址携带的随机码已在后台被清理,因此页面不会输出附件信息,保证了系统的安全可控。

二.附件上传

1.开始采用bootstrap fileinput插件,但客户反映这个插件太占页面,而且不美观。因此直接采用ajax进行上传,并在后台进行严格的文件类型校验,确保用户上传的为合法附件。

2.用户上传附件成功后,系统加载附件名称到页面,并对图片类型附件用layer mobile等进行预览展示。

3.用户上传的附件需进行长度展示考虑,超过一定长度的附件需进行格式化处理。

三.与后台管理系统共享附件

由于后台管理系统采用另一个平台建造,因此其附件存储在其内部,不过好处在于获取其附件时,无需权限验证。针对此情况,有几种做法:

方案 优点 缺点
拷贝附件到本地 前端不改动 增大存储占用
采用代理组件进行代理转发 前端不改动   需配置
获取后直接输出二进制  不占用存储 增加代码输出量,浏览器不会缓存,性能略受影响
直接暴露真实地址  不占用存储 安全性不好,跨域,另外外网无法访问

经过咨询DeepSeek,最后决定用YARP代理形式。