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