HTTP超文本传输​​协议

请求方式

常见的请求方式有两种:GETPOST ,还有一些不常见的请求方式:HEADPOSTPUTDELETECONNECTOPTIONS


请求参数

HTTP请求方式虽然很多,但传参的方式只有三种途径:请求头传递、URL传递参、body请求体传参;


URL传参

RESTful方式,例如:http://localhost:8080/users/123;

普通方式,例如:http://localhost:8080/users?userId=123;


Body请求体传参

application/x-www-form-urlencoded:数据被编码成以 '&' 分隔的键值对,非字母或数字会进行URL编码,因此不支持二进制数据;

multipart/form-data:将数据编译成键值对,以便用XMLHttpRequest来发送数据数据编译成键值对,详见MDN

text/plain:将数据以普通文本的方式,直接发送到服务端;


Content-Type

请求头 Content-Type 用于告知服务器请求实际发送的数据类型。

响应头 Content-Type 用于告知客户端请求实际返回的数据类型

## 此 Content-Type 指明数据是以 multipart/form-data 来编码
Content-Type: multipart/form-data; boundary=something

## 此 Content-Type 里指明了数据是以 application/x-www-form-urlencoded 来编码
Content-Type: application/x-www-form-urlencoded

## 此 Content-Type 用告知服务端消息主体是序列化后的 JSON 字符串
Content-Type: application/json; charset=utf-8

## 此 Content-Type 用告知服务端消息主体是一个普通文本
Content-Type: text/html; charset=utf-8

## 其它
text/plain
text/html
image/jpeg
image/png
audio/mpeg
audio/ogg
audio/*
video/mp4
application/*
application/json
application/javascript
application/ecmascript
application/octet-stream
......


注意:如果Body请求体为 multipart/form-data ,则数据以二进制字节流发送,需要通过请求头 Content-Type 告知服务器使用 multipart/form-data 形式接收和解析参数;若错误的指定 Content-Type 会导致服务器以错误的方式解析请求数据,从而导致乱码或其它错误。当 Content-Type 为 application/x-www-form-urlencoded 时,服务器接收到数据后,会进行 URL解码。



详见MDN官网:https://developer.mozilla.org/zh-CN/docs/Web/HTTP

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Methods/POST

https://developer.mozilla.org/zh-CN/docs/Web/API/FormData/Using_FormData_Objects

举报

© 著作权归作者所有


1