http知识及常见状态码

ARP协议
ARP是一种用以解析地址的协议,根据通信方的IP地址就可以反查出对应的MAC地址

HTTP是无状态协议,使用HTTP协议,每当有新的请求发送时,就会有对应的新响应产生.协议本身并不保留之前一切的请求或响应报文的信息.而对于购物网站这样的情况,网站为了能够掌握是谁送出的请求,需要保存用户的状态,这时需要用到Cookie.

应用http协议时,必定是一端担任客户端角色,另一端担任服务端角色.
http协议规定,请求从客户端发出,最后服务端响应该请求并返回.换句话说,肯定是先从客户端开始建立通信的,服务端在没有接收到请求之前不会发送响应.

在HTTP/1.1中,所有的连接默认都是持久连接.
持久连接使得多数请求以管线化方式发送成为可能.即不用等待响应就可以发送下一个请求.

首部字段Host会告知服务器,请求的资源所处的互联网主机名和端口号.Host首部字段在HTTP/1.1规范内饰唯一一个必须被包含在请求内的首部字段.
首部字段Host和以单台服务器分配多个域名的虚拟主机的工作机制有很密切的关联,这是首部字段Host必须存在的意义.
请求被发送至服务器时,请求中的主机名会用IP地址直接替换解决.但如果这时,相同的IP地址下部署运行着多个域名,那么服务器就会无法理解究竟是哪个域名对应的请求.因此,就需要使用首部字段Host来明确指出请求的主机域名.若服务器未设定主机名,那直接发送一个空值即可.Host:

告知服务器意图的HTTP方法

  • GET: 获取资源
  • POST: 传输实体主体
  • PUT: 传输文件
    (就像FTP协议的文件上传一样,要求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置.但是,鉴于HTTP/1.1的PUT方法自身不带验证机制,任何人都可以上传文件,存在安全性问题,因此一般的Web网站不使用该方法.若配合Web应用程序的验证机制,或架设设计采用REST标准的同类网站,就可能会开放使用PUT方法.)
  • HEAD: 获得报文首部
    (HEAD方法和GET方法一样,只是不返回报文主体部分.用于确认URI的有效性及资源更新的日期时间等)
  • DELETE: 删除文件
    (DELETE方法和PUT方法相反,用于删除文件, 同样的,HTTP/1.1不带验证机制,所以一般的Web网站也不使用DELETE方法)
  • OPTIONS: 询问支持的方法
    (OPTIONS方法用来查询针对请求URI指定的资源支持的方法)
  • TRACE: TRACE方法是让Web服务器端将之前的请求通信环回给客户端的方法
  • CONNECT: 要求用隧道协议连接代理

1 . HTTP常见状态码

  • 100-199 用于指定客户端应相应的某些动作。
  • 200-299 用于表示请求成功。
  • 300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。
  • 400-499 用于指出客户端的错误。
  • 500-599 用于支持服务器错误。
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
HttpServletResponse中的常量代表关联不同标准消息的状态码。
在servlet程序中,你会更多地用到这些常量的标识来使用状态码。
例如:你一般会使用response.setStatus(response.SC_NO_CONTENT)
而不是 response.setStatus(204),因为后者不易理解而且容易导致错误。
但是,你应当注意到服务器允许对消息轻微的改变,而客户端只注意状态码的数字值。
所以服务器可能只返回 HTTP/1.1 200 而不是 HTTP/1.1 200 OK。
- 100 (Continue/继续)
- 101 (Switching Protocols/转换协议)
- 200 (OK/正常)
- 201 (Created/已创建)
- 202 (Accepted/接受)
- 203 (Non-Authoritative Information/非官方信息)
- 204 (No Content/无内容)
- 205 (Reset Content/重置内容)
- 206 (Partial Content/局部内容)
- 300 (Multiple Choices/多重选择)
- 301 (Moved Permanently)
- 302 (Found/找到)
- 303 (See Other/参见其他信息)
- 304 (Not Modified/未修正)
- 305 (Use Proxy/使用代理)
- 307 (Temporary Redirect/临时重定向)
- 400 (Bad Request/错误请求)
- 401 (Unauthorized/未授权)
- 403 (Forbidden/禁止)
- 404 (Not Found/未找到)
- 405 (Method Not Allowed/方法未允许)
- 406 (Not Acceptable/无法访问)
- 407 (Proxy Authentication Required/代理服务器认证要求)
- 408 (Request Timeout/请求超时)
- 409 (Conflict/冲突)
- 410 (Gone/已经不存在)
- 411 (Length Required/需要数据长度)
- 412 (Precondition Failed/先决条件错误)
- 413 (Request Entity Too Large/请求实体过大)
- 414 (Request URI Too Long/请求URI过长)
- 415 (Unsupported Media Type/不支持的媒体格式)
- 416 (Requested Range Not Satisfiable/请求范围无法满足)
- 417 (Expectation Failed/期望失败)
- 500 (Internal Server Error/内部服务器错误)
- 501 (Not Implemented/未实现)
- 502 (Bad Gateway/错误的网关)
- 503 (Service Unavailable/服务无法获得)
- 504 (Gateway Timeout/网关超时)
- 505 (HTTP Version Not Supported/不支持的 HTTP 版本)