文章目录

  • 一 参数传输失败元凶:请求头中的Content-Type
    • 1.1 application/x-www-form-urlencoded
    • 1.2 multipart/form-data
    • 1.3 content-type:application/json
  • 二 如何从服务端下载文件:响应头中的Content-Type

Content-Type含义为内容类型,请求头和响应头中都有该项,有时我们会遇到明明发送了参数后端却没有拿到的情况,或后端向我们发送了一个图片,获取后却是乱码。

一 参数传输失败元凶:请求头中的Content-Type

请求头中的Content-Type是为告诉服务器我们发送的请求信息是哪种格式的。

不合适的Content-Type可能导致服务端无法正确接收我们的参数。

1.1 application/x-www-form-urlencoded

请求头中的Content-Type默认值为content-type:application/x-www-form-urlencoded,不指定content-type时,默认使用此格式。此时参数格式如下:

key1=value1&key2=value2

这里可以使用qs.js库,qs.parse 方法可以把一段格式化的字符串转换为对象格式,qs.stringify 则和 qs.parse相反,是把一个参数对象格式化为一个字符串。

字符串转对象格式:

let url = 'http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e';
let data = qs.parse(url.split('?')[1]);
{a: 1, b: 2, c: '', d: xxx, e: ''
}

对象转字符串格式:

let params = { c: 'b', a: 'd' };
qs.stringify(params)// 结果是
'c=b&a=d'

这里通过qs.stringify转化的字符串就可以直接作为参数传给后端了。

1.2 multipart/form-data

application/x-www-form-urlencoded是把数据使用url编码后传送给后端,不适合用于传输大型二进制数据或者包含非ASCII字符的数据,multipart/form-data就诞生了,专门用于有效的传输文件。

multipart/form-data 既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件。

使用multipart/form-data时,请求体参数可来自于new FormData()生成的实例,或enctype为multipart/form-data的表单数据。

let data = new FormData()
data.append('file1', file1)
data.append('file2', file2)
this.axios({url: url,headers: {'Content-Type': 'multipart/form-data'},data: data
}).then(()=>{...
})

1.3 content-type:application/json

application/json能够方便传递复杂多层次对象,消息主体是序列化的JSON字符串。

let params = { c: 'b', a: 'd' };
params = JSON.stringify(params)

二 如何从服务端下载文件:响应头中的Content-Type

响应头中的Content-Type决定浏览器将以什么形式、什么编码读取返回数据,这就是经常看到一些 PHP 网页点击的结果却是下载一个文件或一张图片的原因。

响应头中的Content-Type默认为text/plain,但通常需要显式地指定为text/html。

响应头中的Content-Type由服务端调用专用的方法setContentType,进行设置。

三种常见Content-Type格式,最后一种你肯定用过相关推荐

  1. linux常见的文件系统格式,Linux系统里几种常见的文件系统格式

    在天下网吧-网吧系统-网吧天下栏目上一篇文章中,我们看到了:希望对各位网吧网管或者网吧维护,做网吧系统的各位大大有用,那么今天我们一起来看下:Linux系统里几种常见的文件系统格式 在上一篇文章中我们 ...

  2. 常见的计算机网络教学模式有哪几种,常见的教学方法有哪几种

    我们都知道,教学方法包括教师教的方法(教授法)和学生学的方法(学习方法)两大方面,是教授方法与学习方法的统一.教授法必须依据学习法,否则便会因缺乏针对性和可行性,而不能有效地达到预期的目的.下面学习啦 ...

  3. 转载:JSON技术的调研报告(四种常见的JSON格式对比及分析)

    转载自地址:http://www.cnblogs.com/kunpengit/p/4001680.html 一 .各个JSON技术的简介和优劣 1.json-lib json-lib最开始的也是应用最 ...

  4. Linux下常见的压缩包格式有5种:zip tar.gz tar.bz2 tar.xz tar.Z

    filename.zip的解压: unzip filename.zip filename.tar.gz的解压: tar -zxvf filename.tar.gz z: gzip      压缩格式 ...

  5. JSON技术的调研报告(四种常见的JSON格式对比及分析)

    https://www.cnblogs.com/renmengkai/p/9183775.html

  6. 一个长方体玻璃容器从里面量长宽_养观赏鱼用玻璃鱼缸吗?3种常见养鱼容器,另外2种养鱼效果不差...

    养鱼需要容器,不过我们常见的容器主要还是玻璃缸,长方形的玻璃缸.不过其实从玻璃缸这方面继续延伸下去,还有一些热弯,负压,异形等等的鱼缸款式,这样说起来就比较多了.不过养鱼的容器是仅仅限于玻璃类容器吗? ...

  7. Media Type 媒体类型(MIME Type、Content Type)

    媒体类型用于声明随之而来的数据的格式.又称:MIME类型.MIME Type.Content Type. 是一种用于在异构系统.分布式网络之间声明并传递信息主体格式的方法. 一般的,在文件系统中,我们 ...

  8. mobi格式电子书_进阶能力 | 了解常见的电子书格式

    静读君是初中开始接触电子书的,那个时候以为电子书就是TXT,到后来渐渐地接触到了PDF.DOC.CAJ ······ 才知道原来电子书还分这么多的格式,那个时候还在想,为什么要弄这么多不同的格式呢?那 ...

  9. 各种常见的word格式符号(回车字符、软回车、分页符等)

    一.如何显示编辑符号 1.打开WORD-选项-显示,勾选格式标记 2.如下图所示.在[开始]一[段落]选项卡中,它可以帮助我们识别编辑过程中的格式符号. 二.各种常见的word格式符号 第一种 描述: ...

  10. MP4怎么转换成MP3格式?两种方法帮你实现

    MP4是一种常见的视频格式,而MP3则是一种音频格式.有时候,我们需要将MP4视频转换为MP3音频,例如从YouTube下载视频后只需要提取其中的音频部分.以下是两种方法帮助您实现MP4到MP3的转换 ...

最新文章

  1. Linux 创建yum源和软件仓库实例
  2. 对Document library中修改文档的Author之实现修改在list(三)
  3. Angular-Ui-Router+ocLazyLoad动态加载脚本
  4. 关于selenium的8种元素定位
  5. Linux kernel 3.10内核源码分析--TLB相关--TLB概念、flush、TLB lazy模式
  6. 多线程并发神器--ThreadLocal
  7. 人月神话阅读笔记(二)
  8. “虎力全开”采购季,存储产品已就位
  9. 大事件后台管理系统开发实战(上)
  10. python sqlite并发处理_python sqlite大数据 处理
  11. python怎么把excel单元格里面的文字提取出来_干货 | Excel如何花式秀操作?
  12. pop3通过时间或者条件取邮件_Python 进阶(三):邮件的发送与收取
  13. go 输入输出流(io)
  14. Scala: 简介和安装
  15. 使用Java语言借助Quartz jar包实现定时器的方法
  16. mysql日志模式默认是raw还是_深入学习MySQL 02 日志系统:bin log,redo log,undo log
  17. C语言实现推箱子game
  18. 牛客网华为机试题整理
  19. 信息熵是怎样炼成的 | 纪念信息论之父香农
  20. Mysql高阶sql语句

热门文章

  1. vue的测试,vue-devtools
  2. Run、RunOnce 键值解析
  3. 计算机通信电气电子适合女生学,工科中适合女生的专业和不适合女生的专业有哪些...
  4. python绘图实验报告_matplotlab实验报告1
  5. CF1060E Sergey and Subway
  6. php获取header信息,PHP获取当前所有请求头信息
  7. 不能再停滞了,必须勇往直前
  8. c语言方括号中写负数,c语言方括号的用法
  9. PCB表面工艺优缺点简介
  10. 艾美捷测序级 II,纯化胰蛋白酶实验室使用的测定方法