HTTP协议学习笔记

参考文档:菜鸟教程

一、HTTP简介

  1. 概念
    HTTP:Hyper Text Transfer Protocol(超文本传输协议)。
    用途:基于TCP/IP通信协议,从万维网(World Wide Web)服务器传输超文本到本地服务器。
  2. 工作原理
    HTTP是客户端与Web服务器(C/S)之间的通信协议,客户端通过URL向服务器发送请求,服务器接收到请求后向客户端发送响应信息。
    HTTP默认端口号为80,可修改。
  3. 注意:
    ① HTTP是无连接的,即限制每次廉洁只处理一个请求,服务器发出响应并收到客户端应答后就断开连接,也就是不同请求之间相互独立。好处是节省传输时间。
    ② HTTP是媒体独立的,即任何客户端和服务器知道如何处理的数据内容都可以通过HTTP传输。
    ③ HTTP是无状态的,即不会记忆之前的信息,需要之前的信息必须重传。好处一是每次连接传送的数据量增大,二是在服务器不需要先前信息时反应较快。
  4. HTTP协议通信流程:
    HTTP协议通信流程

二、消息结构

  1. 请求
    客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成,下图给出了请求报文的一般格式。
    HTTP请求报文格式
    示例:
GET /hello.txt HTTP/1.1
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi
  1. 响应
    HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文,下图给出了请求报文的一般格式。
    HTTP响应报文格式
HTTP/1.1 200 OK
Date: Mon, 9 Aug 2021 19:13:05 GMT
Context-Type: text/html; charset=ISO-8859-1
Content-Length: 122

<html>
  <head>
    <title>My Homepage</title>
  </head>
  <body>
    <!-- body goes here -->
  </body>
</html>

三、请求方法

HTTP1.0定义了三种请求方法:GET、POST、HEAD;
HTTP1.1新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE、CONNECT。

序号 方法 描述
1 GET 请求指定的页面信息,并返回实体主体。
2 HEAD 类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头。
3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。
5 DELETE 请求服务器删除指定的页面。
6 CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
7 OPTIONS 允许客户端查看服务器的性能。
8 TRACE 回显服务器收到的请求,主要用于测试或诊断。
9 PATCH 是对PUT方法的补充,用来对已知资源进行局部更新。

四、响应头信息

序号 响应头 说明
1 Allow 服务器支持哪些请求方法(如GET、POST等)。
2 Content-Encoding 文档的编码(Encode)方法。
3 Content-Length 表示内容长度。
4 Content-Type 表示后面的文档属于什么MIME类型。
5 Date 当前的GMT时间。
6 Expires 文档过期的时间
7 Last-Modified 文档的最后改动时间。
8 Location 表示客户应当到哪里去提取文档。
9 Refresh 表示浏览器应该在多少时间之后刷新文档,以秒计。
10 Server 服务器名字。
11 Set-Cookie 设置和页面关联的Cookie。Servlet不应使用response.setHeader("Set-Cookie", ...),而是应使用HttpServletResponse提供的专用方法addCookie。
12 WWW-Authenticate 客户应该在Authorization头中提供的授权信息

五、状态码

HTTP响应的状态行中包含一个状态码(HTTP Status Code),用以表示服务器响应状态。
常见的状态码:

  • 200 - 请求成功
  • 301 - 资源(网页等)被永久转移到其它URL
  • 404 - 请求的资源(网页等)不存在
  • 500 - 内部服务器错误

状态码由三个十进制数字组成,第一个数字定义了状态码的类型,后两位表示具体状态。状态码可分为5类:

状态码 描述
1** 信息,服务器收到请求,需要请求者继续执行操作。
2** 成功,操作被成功接收并处理。
3** 重定向,需要进一步的操作以完成请求。
4** 客户端错误,请求包含语法错误或无法完成请求。
5** 服务器错误,服务器在处理请求的过程中发生了错误。

六、Content-Type

Content-Type:用于告诉客户端实际返回的内容是什么类型的,决定浏览器将以什么形式、什么编码读取这个文件。
语法格式:Content-Type: text/html; charset=utf-8
常见的媒体格式类型如下:

序号 Content-Type 格式
1 text/html HTML格式
2 text/plain 纯文本格式
3 text/xml XML格式
4 image/gif gif图片格式
5 image/jpeg jpg图片格式
6 image/png png图片格式
7 application/xhtml+xml XHTML格式
8 application/xml XML数据格式
9 application/atom+xml Atom XML聚合格式
10 application/json JSON数据格式
11 application/pdf pdf格式
12 application/msword Word文档格式
13 application/octet-stream 二进制流数据(如常见的文件下载)
14 application/x-www-form-urlencoded
中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)
15 multipart/form-data 需要在表单中进行文件上传时,就需要使用该格式
posted @ 2021-08-09 20:33  阿松0919  阅读(161)  评论(0)    收藏  举报