bug 回忆录(二)
时间:2022-07-26
本文章向大家介绍bug 回忆录(二),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
@author Ken @time 2020-09-25 21:23:26 @description 转载请备注出处,谢谢
bug 回忆录(二)
大家好,我是 Ken,人贱人爱的前端小 Ken,我的公众号是 前端小Ken
,今天我要告诉你一个严重的问题,我发现这个奇怪的 bug,内心一万个草泥马在空中飘过,顿时心里害怕,菊花一紧:
最后我还是怂了,不得不好好认真的对待 bug。
接着昨天的猜测继续往下探索:
昨天在末尾,我们猜测可能使用 POST
请求就可能会解决那个警告:
Resource interpreted as Document but transferred with MIME type applic。。。
步骤如下:
- 通过拿到后端返回的下载 id
- 再一次使用
POST
方式请求
具体代码如下:
XM.ajax.post(this.url, params).then(res => {
// 其中 res.data.data 就是后端返回的 id
console.log(res.data.data)
// 我们需要在这里处理到处的功能
// 拼接下载压缩包链接
let downloadUrl = this.$_getEnv('xdeploy').baseUrl + this.downloadUrl + res.data.data
this.downFile(downloadUrl);
}).catch(err => {
this.$message.error(err.msg)
console.error(err)
})
// vue 语法
methods: {
downFile(downloadUrl) {
this.download('xdeploy', downloadUrl).then(res => {
}).catch(err => {
this.$message.error(err.msg)
this.$_consoleUtil.err(err)
})
},
download(modelName, url, data, param) {
axios({
method: 'POST',
url,
data,
param
}).then(res => {
// 处理下载过程代码
}).catch(err => {
})
}
}
这次真的下载成功了,并且完美解决警告问题:
这次我们特别注意到,在响应头里面看到有以下这句:
Content-Disposition: attachment; filename="xxx.zip"
这下我们得好好研究下这个玩意,有到了我们装逼的时候了
作为消息主体中的消息头
在HTTP场景中,第一个参数或者是inline(默认值,表示回复中的消息体会以页面的一部分或者整个页面的形式展示),或者是attachment(意味着消息体应该被下载到本地;大多数浏览器会呈现一个“保存为”的对话框,将filename的值预填为下载后的文件名,假如它存在的话)。
Content-Disposition: inline
Content-Disposition: attachment
Content-Disposition: attachment; filename="filename.jpg"
所述Content-Disposition 的 header 在 MIME 消息的电子邮件的更大的范围内定义的,但仅可能的参数的子集应用于 HTTP 形式和 POST 请求。只有值 form-data,以及可选的指令 name 和 filename,可以在 HTTP 上下文中使用。
所以,用 POST
方式请求是正确的方式。
- Jquery闪烁提示特效
- mstsc 远程序桌面登录的 c#开发
- 突然顿悟的Javascript中的this
- 解决Electron加载带jquery的项目报错问题
- dedecms利用addfields body在首页调用文章内容
- 如何设置dedecms自定义表单必填项?
- 如何用<dl>标签做表格而不用table标签
- Gulp使用指南
- Gulp Error: Cannot find module 'jshint/src/cli'
- 自学如何使用Python和Keras构建你自己专属的AlphaZero系统
- 用Visual Studio Code写Node.j
- 帝国CMS搜索页伪静态实现方法
- 5步搭建GO环境
- 你真的了解如何将 Nginx 配置为Web服务器吗
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 技术译文 | MySQL 8.x DDL 和查询重写插件
- iOS webp图片展示处理
- Android内存优化 | LeakCanary/Profiler & 非静态内部类耗时操作 实战分析
- 使用keycloak实现k8s用户权限的统一管理
- python魔法方法是什么
- 如何同步上游分支代码?
- 在 Pycharm 中安装及使用 Jupyter (图文详解)
- 【经验分享】如何使用keras进行多主机分布式训练
- 分享一种接口的日志格式
- Python 基础(二):基本语句
- javaScript代码飘红报错看不懂?读完这篇文章再试试!
- Synchronized简述
- PythonforResearch | 2_数据处理
- 程序员过关斩将--Http请求中如何保持状态?
- 如何有效恢复误删的HDFS文件