HTTP 是基于 TCP/IP 协议的应用层协议。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。
请求部分由三部分组成:
- Requset line:请求行,位于第一行
- Request headers:请求消息头,从第二行开始至第一个空行结束
- Request body:请求正文,从第一个空行之后的都是正文
具体格式如下:
Method Path-to-resource Http/Version-number |
---|
请求消息头 |
空行 |
请求正文 |
下面是一个HTTP请求的例子:
POST /index.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: [http://localhost/](http://localhost/)
Content-Length:25
Content-Type:application/x-www-form-urlencoded
username=aa&password=1234
响应部分也由三部分组成:
- Response line:响应行,位于第一行
- Response headers:响应消息头,从第二行开始至第一个空行结束
- Response body:响应正文,从第一个空行之后的都是正文
具体格式如下:
Http/Version-number Statuscode message |
---|
响应消息头 |
空行 |
响应正文 |
下面是一个HTTP响应的例子:
HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8
<html>
<head></head>
<body>
<!--body goes here-->
</body>
</html>
HTTP之状态码(要背)
状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
常见状态码:
200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
使用Chrome开发者工具查看 HTTP 请求响应内容:
- 打开Chrome浏览器,在浏览器中任意位置右击;
- 点击“检查”,打开浏览器内置的开发者调试平台;
- 点击“Network”选项卡;
- 点击“Name”一栏下面的任意一条信息;
- 随后将出现如下图页面:
点击Request Headers可查看请求消息,点击Response Headers可查看响应消息
点击「view source」(重要的话重复三遍)
- 点击「view source」后即可查看http的相关信息了,包括请求头部信息、响应头部信息、Cookie等
curl命令:创建请求
curl -s -v "https://www.baidu.com"
更多curl命令的内容可前往阮一峰的curl网站开发指南进行查看。