HTTP请求POST、GET请求的数据格式(Content-type 和 Response-type)

1,Content-type

在HTTP的请求头中,可以使用Content-type来指定上传参数不同格式的请求信息。
get方法:
  在url中说明情请求的资源,比如https://www.baidu.com/com?from=self&name=xx 其中?后的数据就是请求的数据,并且连接用&,get方法也可以提交表单数据,但是提交的数据在url中,其他人可以通过查看历史记录中的url来获取你提交的数据,这样很不安全.

post方法
  传输数据不在url中,而在数据段中出现,并且请求头多了Content-Type 和 Content-Length,post提交表单数据的时候比get方法更安全.

常用的Content-type的类型
1,application/json,现在越来越多的人把它作为请求头,用来告诉服务端消息主体是序列化后的 JSON 字符串。

Content-Type: application/json

编译前的数据格式(json字符串)
‘{id:9098,name:"name"}’

使用contentType: “application/json”则data只能是json字符串

eg:
let data = {id:1};
$.ajax({  
	url: actionurl,  
	type: "POST",  
	datType: "JSON",  
	contentType: "application/json"  
	data: JSON.Stringify(data), 
	async: false,  
	success: function () { }  
}); 

2, application/x-www-form-urlencoded,form表单默认的数据格式,提交的数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码。(ajax默认的Content-Type类型)

# Request Headers

Content-Type: application/x-www-form-urlencoded
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9

#编译前的数据格式,json形式
  {
      id:9870,
      name:"name"
    }
#编译后的数据格式,以&连接的参数形式
name=cjj&age=11

application/x-www-form-urlencoded是默认的请求头,其ajax的请求数据格式是json

eg:
$.ajax({  
	url: actionurl,  
	type: "POST",  
	datType: "JSON",  
	data: { id: nodeId },  
	async: false,  
	success: function () {}  
}) 

3,multipart/form-data,对用于在表单中上传文件时,也可以上传普通数据,只需要让from的ectyle等于multipart/form-data就可以了。

# Request Header

POST /adduser HTTP/1.1
Host: localhost:8030
Connection: keep-alive
Content-Length: 232
Pragma: no-cache
Cache-Control: no-cache
Origin: chrome-extension://fdmmgilgnpjigdojojpjoooidkmcomcm
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryBRi81vNtMyBL97Rb
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9


# Request Payload

------WebKitFormBoundaryBRi81vNtMyBL97Rb
Content-Disposition: form-data; name="name"

name1
------WebKitFormBoundaryBRi81vNtMyBL97Rb
Content-Disposition: form-data; name="age"

12
------WebKitFormBoundaryBRi81vNtMyBL97Rb--
--------------------- 

这种格式的数据会有一个边界线boundary(这里就是------WebKitFormBoundaryBRi81vNtMyBL97Rb)用于分割不同的字段,为了避免与正文内容重复,boundary很长很复杂。消息主体以boundary开始,紧接着就是内容描述信息,然后是回车,最后是字段具体的内容(文本或二进制)。如果传输的是文件,还要包含文件名和文件类型信息。消息主体以boundary结束。

2,responseType

用来指定后台返回响应数据的类型。常用如下:

  • "" 将 responseType 设为空字符串与设置为"text"相同, 是默认类型 (实际上是 DOMString)。
  • "text" 返回的是包含在 DOMString 对象中的文本。
  • "document" 返回的是一个 HTML Document 或 XML XMLDocument
  • "arraybuffer" 返回的是一个包含二进制数据的 JavaScript ArrayBuffer
  • "blob" 返回的是一个包含二进制数据的 Blob 对象
  • "json" 返回的是一个 JavaScript 对象 。这个对象是通过将接收到的数据类型视为 JSON 解析得到的。
  • "ms-stream" 返回的是下载流的一部分 ;此响应类型仅允许下载请求,并且仅受Internet Explorer支持。

参考链接:https://blog.csdn.net/u014672511/article/details/80425808
参考链接:https://blog.csdn.net/yibowanbo/article/details/81013412

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值