客户端与服务端之间通信,数据传输需要遵守的规则<br><ul><li>数据 -> 报文</li><li>客户端给服务端发送数据 -> 请求<br>▲ GET 请求<br>▲ POST 请求</li><li>服务端给客户端发送数据 -> 响应</li></ul>
GET 请求<br><ul><li>请求行<br>▲ 请求方式<br>▲ 请求资源路径 [?请求参数]<br>▲ 请求协议版本</li></ul><ul><li>请求头</li></ul>
<b>请求行</b><br>GET /project/source HTTP/1.1<br>--------------------------------------------<br><ul><li>请求方式 GET</li><li>请求资源路径 /project/source</li><li>请求协议版本 HTTP/1.1</li></ul>
<b>请求头(key: value)<br></b>Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*<br>Accept-Language: zh-CN<br>User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 3.0.30729; Media Center PC 6.0)<br>UA-CPU: AMD64<br>Accept-Encoding: gzip, deflate<br>Host: localhost:8080<br>Connection: Keep-Alive<br>-----------------------------------------------------------------------------------------------------------------------------------------------<br><ul><li>Accept:告知服务端,客户端可以接收的数据类型</li><li>Accept-Language:告知服务端,客户端可以接收的语言类型<br>▲ zh-CN 中文中国<br>▲ en-US 英文美国</li><li>User-Agent:浏览器信息</li><li>Accept-Encoding:告知服务端,客户端可以接收的数据编码(压缩)格式</li><li>Host:表示请求服务端的 ip:port</li><li>Connection:告知服务端如何处理请求连接<br>▲ Keep-Alive 告知服务端回传数据不要马上关闭,保持一小段时间的连接<br>▲ Closed 马上关闭</li></ul>
POST 请求<br><ul><li>请求行<br>▲ 请求方式<br>▲ 请求资源路径<br>▲ 请求协议版本</li><li><span style="font-size: inherit;">请求头</span></li><li><span style="font-size: inherit;">空行</span></li><li><span style="font-size: inherit;">请求体</span></li></ul>
<b>请求行</b><br>POST /project/source HTTP/1.1<br>--------------------------------------------<br><ul><li>请求方式 POST</li><li>请求资源路径 /project/source</li><li>请求协议版本 HTTP/1.1</li></ul>
<b>请求头(key: value)</b><br>Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*<br>Referer: http://localhost:8080/project/source/index.html<br>Accept-Language: zh-CN<br>User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 3.0.30729; Media Center PC 6.0)<br>Content-Type: application/x-www-form-urlencoded<br>UA-CPU: AMD64<br>Accept-Encoding: gzip, deflate<br>Host: localhost:8080<br>Content-Length: 26<br>Connection: Keep-Alive<br>Cache-Control: no-cache<br>---------------------------------------------------------------------------------------------------------------------------------------------------------------<br><ul><li>Referer:表示请求发起时浏览器地址栏中的地址</li><li>Content-Type:表示发送的数据类型<br>▲ application/x-www-form-urlencoded 表示提交的数据格式为 name=value&sex=male 并对其进行 url 编码(将非英文内容转换为 %xx%xx 格式)<br>▲ multipart/form-data 表示以多段的形式提交数据给服务端(以流的形式提交,用于上传)</li></ul><ul><li>Content-Length:表示发送的数据的长度</li><li>Cache-Control:表示如何控制缓存(no-cache 不缓存)</li></ul>
<b>请求体</b><br>username=name&password=word 发送给服务端的数据
响应<br><ul><li>响应行<br>▲ 响应协议版本<br>▲ 响应状态码<br>▲ 响应状态描述符<br></li><li>响应头</li><li>空行</li><li>响应体</li></ul>
<b>响应行<br></b>HTTP/1.1 200 OK
<b>响应体</b><br>Server: Apache-Coyote/1.1<br>Accept-Ranges: bytes<br>ETag: W/"375-1578903773217"<br>Last-Modified: Sat, 9 Jan 2021 08:22:53 GMT<br>Content-Type: text/html<br>Conten-Length: 375<br>Date: Sat, 9 Jan 2021 08:38:42 GMT<br>-------------------------------------------------<br><ul><li>Server:表示服务器信息</li><li>Content-Type:表示响应体的数据类型</li><li>Content-Length:表示响应体的长度</li><li>Date:请求响应的时间(格林威治时间)</li></ul>
<b>空行</b>
<b>响应体</b><br><!DOCTYPE html><br><html lang="en"><br><head><br> <meta charset="UTF-8"><br> <title>Title</title><br></head><br><body><br><form action="http://localhost:8080/project/source" method="post"><br> <input type="text" name="username"><br> <input type="password" name="password"><br> <input type="submit" value="Submit"><br></form><br></body><br></html>
MIME 类型
MIME 即 HTTP 协议中的数据类型<br><ul><li>全称:Multipurpose Internet Mail Extensions 『多功能 Internet 邮件扩充服务』</li><li>格式为:『大类型/小类型』并与某一种文件的扩展名相对应</li></ul>
常见 MIME 类型<br><ul><li>超文本标记语言文本 .html text/html</li><li>普通文本 .txt text/plain</li><li>RTF 文本 .rtf application/rtf</li><li>GIF 图形 .gif image/gif</li><li>JPEG 图形 .jpeg, .jpg image/jpeg</li><li>au 声音文件 .au audio/basic</li><li>MIDI 音乐文件 .mid, .midi audio/midi, audio/x-midi</li><li>RealAudio 音乐文件 .ra, .ram audio/x-pn-realaudio</li><li>MPEG 文件 .mpg, .mpeg video/mpeg</li><li>AVI 文件 .avi video/x-msvideo</li><li>GZIP 文件 .gz application/x-gzip</li><li>TAR 文件 .tar application/x-tar</li></ul>