59

HTTP协议详解

 5 years ago
source link: https://www.linuxprobe.com/http-agreement-details.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
导读 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
1.1. 请求方法

http请求方法有GET、POST、PUT、HEAD、DELETE、OPTIONS、TRACE、CONNECT。当然上述方法是基于HTTP/1.1的,HTTP/1.0中独有的方法就不说了。

GET----获取资源
GET方法一般用来从服务器上获取资源的方法。服务器端接到GET请求后,就会明白客户端是要从服务器端获取相应的资源,然后就会根据请求报文中相应的参数,将需要的资源返回给客户端。使用GET方式的请求,传输的参数是拼接在URI上的。
POST----数据提交
POST方法一般用于表单提交,将客户端的数据塞到请求体中发送给服务器端。
PUT----上传文件
PUT方法主要用来上传文件,将文件内容塞到请求报文体中,传输给服务器。因为HTTP/1.1的PUT方法自身不带验证机制,所以任何人都可以上传文件,存在安全性,所以上传文件时不推荐使用。但是在设计接口使用REST标准时,可以使用PUT来做相应内容的更新。
HEAD----获取响应报文头
响应端收到HEAD请求后,只会返回相应的响应头,不会返回响应体。
DELETE----删除文件
DELETE用于删除URI指定的资源,与PUT一样,自身也是不带验证机制的,不过在REST标准中可以用来做相应API的删除功能。
OPTIONS----查询支持的方法
OPTIONS方法是用来查询服务器可对那些请求方法做出响应,返回内容就是响应端所支持的方法。
TRACE----追踪路径
TRACE方法可追踪请求经过的代理路径,在发送请求时会为Max-Forwards头部字段填入数字,每经过一个代理中转Max-Forwards的值就会减一,直至Max-Forwards为零后,才会返回200。因为该方法易引起XST(Cross-Site Tracing,跨站追踪)攻击,所以不常用呢。
CONNECT----要求用隧道协议连接代理
CONNECT方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要使用SSL(Secure Sockets Layer, 安全套接层)和TLS(Transport Layer Security, 传输安全层)协议将通信内容进行加密后经网络隧道传输。

1.2. 响应状态码

HTTP协议的响应状态码。顾名思义,响应状态码是用来标志HTTP响应状态的,响应状态由响应状态码和响应原因短语构成,当然状态码有很多中,本部分就挑出来常用的状态码进行讨论。下方是响应状态码可以分为的几大类:

1xx ---- Informational(信息性状态码),表示接受的请求正在处理。
2xx ---- Success (成功),表示请求正常处理完毕。
3xx ---- Redirection (重定向),表示要对请求进行重定向操作,当然其中的304除外。
4xx ---- Client Error (客户端错误),服务器无法处理请求。
5xx ---- Server Error (服务器错误),服务器处理请求时出错。
上面是响应状态码的整体分类,接下来介绍一些常用的响应状态码。

(01)、200 OK : 表示服务端正确处理了客户端发送过来的请求。

(02)、204 No Content ['kɒntent]内容: 表示服务端正确处理请求,但没有报文实体要返回。

(03)、206 Partial [ˈpɑ:ʃl]部分 Content :表示服务端正确处理了客户端的范围请求,并按照请求范围返回该指定范围内的实体内容。

(04)、301 Moved Permanently['pɜ:mənəntlɪ]永久的:永久性重定向,若之前的URI保存到了书签,则更新书签中的URI。

(05)、302 Found:临时重定向,该重定向不会变更书签中的内容。

(06)、303 See Other:临时重定向,与302功能相同,但是303状态吗明确表示客户端应当采用GET方法获取资源。

(07)、304 Not Modified: 资源未变更,该状态码与重定向并没有什么关系,当返回该状态码时,告诉客户端请求的资源并没有更新,响应报文体中并不会返回所请求的内容。

(08)、400 Bad Request: 错误请求,表示请求报文中包含语法错误。

(09)、401 Unauthorized[ʌnˈɔ:θəraɪzd]未经许可的:请求未认证,表示此发送的请求需要客户端进行HTTP认证(稍后会提到)。

(10)、404 Not Found:找不到相应的资源,表示服务器找不到客户端请求的资源。

(11)、500 Internal [ɪnˈtɜ:nl]Server Error:服务器内部错误,表示服务器在处理请求时出现了错误,发生了异常。

(12)、503 Service Unavailable[ˌʌnəˈveɪləbl]难以获得的:服务不可用,表示服务器处于停机状态,无法处理客户端发来的请求。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK