米侠浏览器点击下载链接却直接打开源代码该如何修复?
问题其实出在服务器上——Content-Type头配置错了,导致浏览器错误地把文件当成了网页来渲染。要解决也不难,要么联系管理员修正后端配置,要么自己动手,通过添加?download=1参数、右键另存为,或者关闭米侠的智能识别开关,强制浏览器把文件当作附件下载。

具体表现是,点击下载链接后,浏览器不弹出保存对话框,而是直接在新标签页里显示源码——不管是HTML、JSON还是纯文本。这说明浏览器把本来应该当作附件处理的响应,错误地当成可渲染的页面内容了。背后的原因,通常就是服务器返回的Content-Type头不对,或者浏览器的MIME类型映射出了问题,再或者就是下载策略开关没设对。
确认服务器返回的真实Content-Type
那怎么确认呢?很简单,打开开发者工具(F12),切到Network面板,刷新页面,再点一下下载链接。在请求列表里找到那个条目,点开,看Response Headers里的Content-Type。如果显示的是text/html、text/plain或application/json,而不是application/octet-stream、application/zip这类标准二进制类型,那说明问题出在服务器端,浏览器只能按文本渲染。这时候,不用折腾浏览器设置,直接找网站管理员修正后端响应头就行。
强制浏览器以附件方式处理链接
先试试手动添加download参数。复制原始下载链接,在新标签页地址栏粘贴,在URL末尾加上?download=1(注意前面加?,如果URL已有参数则改用&),回车。部分服务端会识别这个参数,返回正确的Content-Disposition头。
另一个办法是右键另存为。在下载链接上长按(安卓)或右键(PC),选择“另存为”或“链接另存为”,跳过浏览器的解析流程,直接让系统下载模块处理。
如果上面两种都不行,还可以通过Console注入。按F12,切到Console,输入这段命令:na vigator.download && na vigator.download("https://example.com/file.zip"),把URL换成实际链接。如果控制台报错na vigator.download is not a function,说明当前页面没启用下载API权限,这招就用不了。
重置米侠内置下载行为策略
先关掉“智能识别网页资源”开关。在地址栏输入mi://settings/download,回车,找到“智能识别网页资源”选项,把它关掉。这个功能会主动解析HTML里所有a标签的href,误把一些含关键词(比如.zip、.pdf)的链接当作可预览资源,而不是下载项。
接着禁用阅读模式。访问目标下载页面,点地址栏左侧的Aa图标,关闭“阅读模式”,刷新页面后再点下载链接。阅读模式会剥离原始DOM结构,导致download属性丢失或响应头被覆盖。
最后,清除MIME类型缓存。进入设置,隐私与安全,清除浏览数据,勾选“Cookie及其他网站数据”和“缓存的图像和文件”,时间范围选“所有时间”,点击清除。米侠会缓存某域名下历史响应的MIME类型映射,旧缓存可能污染新请求。
绕过浏览器直接调用系统下载器
如果以上方法都试过了还是不行,那可以试试直接绕过浏览器,调用系统下载器。在Network面板里定位到目标下载请求,右键,选择“复制响应”,新建一个文本文件,粘贴内容,保存为对应的扩展名(比如file.pdf),然后用系统默认的PDF阅读器打开验证。如果内容完整,说明问题出在浏览器协议分发环节,文件本身没损坏。
如果复制响应是空的,或者报错,说明这个请求受Referer或Cookie校验。这时候,可以在Network面板里右键该请求,选择“Copy as cURL”,粘贴到命令行执行,看看真实的响应体是什么。