如何创建不可读的base64 blob字符串链接 隐藏文件下载内部URL路径
实现隐藏内部下载URL的方案
核心逻辑是所有资源路径映射、文件返回逻辑都放在服务端处理,绝对不要把真实内部路径暴露给前端代码。
方案1:服务端代理下载(最高安全性)
用户点击下载按钮时,只请求你公开的后端接口,由后端内部请求真实的资源地址,再把文件流返回给前端,前端全程接触不到真实路径。
示例(Python Flask 实现):
import requests from flask import Flask, Response app = Flask(__name__) # 真实内部资源路径,不对外暴露 INNER_FILE_URL = "https://awhduawhdi.com/folderuser/file.zip" @app.route("/download/file") def download_file(): # 后端内部请求资源 resp = requests.get(INNER_FILE_URL, stream=True) # 构造返回响应,设置下载头 return Response( resp.iter_content(chunk_size=1024), headers={ "Content-Disposition": "attachment; filename=file.zip", "Content-Type": "application/zip" } )
前端只需要给下载按钮绑定/download/file的请求即可,完全看不到内部路径。
方案2:随机串路径映射(和你给出的示例效果一致)
在服务端数据库或缓存中存储「随机字符串」和「真实内部路径」的映射关系,比如你示例中的duiawhudigawudgawudg对应/folderuser/file.zip:
- 用户访问
https://awhduawhdi.com/duiawhudigawudgawudg时,后端提取随机串查映射表 - 匹配到对应真实路径后,返回文件流或跳转内部请求
- 随机串可以设置过期时间,过期后自动失效,进一步提升安全性
方案3:预签名URL(适用于云存储资源)
如果你的文件存放在对象存储类服务中,可以直接调用对应服务的SDK生成有时效性的预签名下载URL:
- 预签名URL的路径是公开的加密串,完全看不到你的内部存储路径
- 可以自定义URL的有效时长,到期后自动失效,即便被用户拿走也无法二次访问
注意:不要使用前端加密解密的方式处理真实URL,前端所有逻辑都可以通过F12调试获取,无法真正隐藏路径。
内容的提问来源于stack exchange,提问作者alberto Lasted
相关产品推荐
相关产品推荐

