HTTP初探

前言

1
由于后天要二级WEB 考试, 内容包括HTTP 协议, 就又看了一遍,之前也了解过,没那么细吧,这会算是补充了下,技术得多次看,每次看会有不一样感受。

HTTP 定义

1
2
3
1.HTTP(超文本传输协议)  是 客户端 与 服务端 之间信息交流的 桥梁。
2.在信息交流之前必须要做的就是 客户端通过连接TCP/IP协议 80 端口 ,以便 服务端侦听HTTP请求。
3.HTTP 是 一种通用的 , 无状态的应用层协议,基于标准客户机/服务器模型。

HTTP 特点

1
2
3
4
5
6
7
8
1.采用 “请求/响应”的交互模式, 客户端发送请求,服务端接受请求,处理请求,并将处理结果返回给客户端。服务端不会主动发送请求。
2.协议设计灵活,拓展性好,HTTP可以通过扩展新的请求方法实现新的功能。
3.无状态: 协议对于事务处理没有存储功能,意思就是如果上次响应的结果在该请求中需要用,那么是用不了的。
缺点:每次连接的数量增大。
优点:1.服务器处理速度快,效率高。
2.避免0了集群特点间状态同步的开销。
4.持久连接: 连接可以重复使用,提高了网络连接使用效率。 持久连接 在HTTP1.1中已 经是默认选项。
5.支持内容协商

HTTP 请求/响应交互模型

HTTP 常用请求方法

  • GET 方法

    1
    2
    3
    1.GET 方法 是 客户端 向服务端 获取资源时使用的,资源类型有图片,音频,HTML.....
    2.服务器在处理GET请求时,它会根据客户端发送过来的url上具体参数进行返回结果处理。
    3.当用GET请求获取数据量较大时,可能会出现传输过程中断情况,HTTP协议提供了断点续传机制,通过GET 方法获取资源时可以指定获取的起始点。
  • POST 方法

    1
    2
    3
    1.POST 方法主要是  客户端向服务端发送数据资源。
    2.POST 和 GET 方法区别:
    POST 请求会包含信息体,信息体中携带了要发送给服务端的数据。
  • HEAD 方法

    1
    2
    3
    4
    5
    1. HEAD 方法 和 GET 方法  POST方法类似
    2. 区别在于:
    GET方法返回的请求URL标识资源内容本身
    HEAD方法仅仅返回相关响应头信息,不返回资源内容
    3.HEAD 方法 主要用于 测试资源是否存在,是否被删除或修改
  • PUT 方法

    1
    PUT方法用请求有效载荷替换目标资源的所有当前表示。
  • DELETE

    1
    DELETE方法删除指定的资源。

HTTP URI

  • URI

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    1.定义
    URI,通一资源标志符(Uniform Resource Identifier, URI),表示的是web上每一种可用的资源,如 HTML文档、图像、视频片段、程序等都由一个URI进行定位的。
    2.URI的结构组成:

    ①访问资源的命名机制;

    ②存放资源的主机名;

    ③资源自身的名称。

    3.实例
    https://blog.csdn.net/qq_32595453/article/details/79516787
    ①这是一个可以通过https协议访问的资源,

    ②位于主机 blog.csdn.net上,

    ③通过“/qq_32595453/article/details/79516787”可以对该资源进行唯一标识(注意,这个不一定是完整的路径)
  • URI 构成

    • URL 统一资源定位符
    • 统一资源名称
  • URL

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    1.定义
    URL是URI的一个子集。它是Uniform Resource Locator的缩写,译为“统一资源定位 符”。


    2.URL的一般格式为(带方括号[]的为可选项):
    protocol :// hostname[:port] / path / [;parameters][?query]#fragment


    3.URL的格式由三部分组成: 
    ①第一部分是协议(或称为服务方式)。

    ②第二部分是存有该资源的主机IP地址(有时也包括端口号)。

    ③第三部分是主机资源的具体地址,如目录和文件名等。

    第一部分和第二部分用“://”符号隔开,

    第二部分和第三部分用“/”符号隔开。

    第一部分和第二部分是不可缺少的,第三部分有时可以省略。

URL 和 URI 区别

1
2
3
4
5
6
7
8
9
网上的观点:
  URI:统一资源标志符(Uniform Resource Identifier)
      URL:统一资源定位符(uniform resource location)
      说白了,URI与URL都是定位资源位置的,就是表示这个资源的位置信息,就像经纬度一样可以表示你在世界的哪个角落。URI是一种宽泛的含义更广的定义,而URL则是URI的一个子集,就是说URL是URI的一部分。
      换句话说,每个URL都是URI,但是不是每个URI都是URL的。他们之间最明显的不同就是在java.net.URI你只能看到他的一些属性,他只是表示一个位置,但是你没有办法通过URI获取到这个对象的流,但是URL就不同了。java.net.URL该类提供方法(openConnection()),通过该方法我们可以通过IO流操作他。但是URI中我貌似没看到相关的方法。
      也就是说:URL是可以直接操作的,但是URI并不行。
————————————————
版权声明:本文为CSDN博主「Readiay」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Readiay/article/details/52862379

HTTP 发送请求

HTTP 响应请求

HTTP 状态码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
100
Continue
继续。客户端应继续其请求

101
Switching Protocols
切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议

200
OK
请求成功。一般用于GET与POST请求

201
Created
已创建。成功请求并创建了新的资源

202
Accepted
已接受。已经接受请求,但未处理完成

203
Non-Authoritative Information
非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本

204
No Content
无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档

205
Reset Content
重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域

206
Partial Content
部分内容。服务器成功处理了部分GET请求

300
Multiple Choices
多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择

301
Moved Permanently
永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替

302
Found
临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI

303
See Other
查看其它地址。与301类似。使用GET和POST请求查看

304
Not Modified
未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源

305
Use Proxy
使用代理。所请求的资源必须通过代理访问

306
Unused
已经被废弃的HTTP状态码

307
Temporary Redirect
临时重定向。与302类似。使用GET请求重定向

400
Bad Request
客户端请求的语法错误,服务器无法理解

401
Unauthorized
请求要求用户的身份认证

402
Payment Required
保留,将来使用

403
Forbidden
服务器理解请求客户端的请求,但是拒绝执行此请求

404
Not Found
服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面

405
Method Not Allowed
客户端请求中的方法被禁止

406
Not Acceptable
服务器无法根据客户端请求的内容特性完成请求

407
Proxy Authentication Required
请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权

408
Request Time-out
服务器等待客户端发送的请求时间过长,超时

409
Conflict
服务器完成客户端的 PUT 请求时可能返回此代码,服务器处理请求时发生了冲突

410
Gone
客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资
源的新位置

411
Length Required
服务器无法处理客户端发送的不带Content-Length的请求信息

412
Precondition Failed
客户端请求信息的先决条件错误

413
Request Entity Too Large
由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息

414
Request-URI Too Large
请求的URI过长(URI通常为网址),服务器无法处理

415
Unsupported Media Type
服务器无法处理请求附带的媒体格式

416
Requested range not satisfiable
客户端请求的范围无效

417
Expectation Failed
服务器无法满足Expect的请求头信息

422
Conflict
表明由于所提供的的作为请求部分的数据非法,创建或修改操作不能被完成

429
TooManyRequests
表明超出了客户端访问频率的限制或者服务端接收到多于它能处理的请求。建议客户端读取相应的Retry-After 首部,然后等待该首部指出的时间后重试。

500
Internal Server Error
服务器内部错误,无法完成请求

501
Not Implemented
服务器不支持请求的功能,无法完成请求

502
Bad Gateway
作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应

503
Service Unavailable
由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中

504
Gateway Time-out
充当网关或代理的服务器,未及时从远端服务器获取请求

505
HTTP Version not supported
服务器不支持请求的HTTP协议的版本,无法

HTTP 状态码分类

1
2
3
4
5
6
7
8
9
1** ------------------------------------> 信息,服务器收到请求,需要请求者继续执行

2** ------------------------------------> 成功,操作被成功接收并处理

3** ------------------------------------> 重定向,需要进一步的操作以完成请求

4** ------------------------------------> 客户端错误,请求包含语法错误或无法完成请求

5** ------------------------------------> 服务器错误,服务器在处理请求的过程中发生了错误

末尾彩蛋时间,这是之前做得关于HTTP协议得思维导图

Author: Small Xin
Link: http://yoursite.com/2019/09/19/HTTP初探/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Donate
  • 微信
  • 支付寶