HTTP协议简介
当客户端与web服务器交互,就存在web请求。这种请求都是基于统一的应用层协议HTTP交互数据。
HTTP协议解析
HTTP超文本传输协议,详细规定了浏览器和万维网服务器之间相互通信的规则,是万维网交互信息的交出,它允许将HTTP文档从WEB服务器传送到WEB浏览器。
如何发一个请求呢?
1、当在浏览器中输入一个URL时,按回车键后这个HTTP请求就发起了,之后就会返回这个请求的结果。
URL(统一资源定位符)也被称为网页地址。
URL的标准格式: 协议://服务器IP/路径/文件名。
请求略图:
2、不用浏览器请求,借助很多工具发起HTTP请求,如Linux系统的curl命令。
windows中也可用curl.exe工具发起请求,
也可以查看访问URL后服务器返回的HTTP响应头,加上-I选项即可,
3、用telnet进行模拟访问HTTP请求访问。
第一步:打开cmd,输入telnet www.baidu.com 80 回车键(此时为黑屏状态),然后利用快捷键“Ctrl+]”打开telnet回显(telnet默认不回显),如下图:
第二步:键入回车键进入编辑状态:
第三步:输入GET /index.html HTTP/1.1,键入回车,接着输入Host:www.baidu.com 接着连续键入两次回车。(两次回车代表提交请求)输入速度一定要快,否则将会连接失败。或者将代码写入记事本,用时直接cope即可,如下图:
不知道为什么win10请求不了,
注意可以通过telnet 探测别人的端口,telnet是通过三次握手,非常靠谱。
HTTP歇息详解
最重要的是HTTP协议中的HTTP header,HTTP header能明确告诉我们请求结果。
HTTP请求分析:
Request请求信息:
GET /index.php HTTP/1.1
Host: www.2cto.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20100101 Firefox/15.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
HTTP请求方法 | 详细解释 |
---|---|
GET | 请求获取由Request-URI所标识的资源。 |
POST | 请求获取由Request-URI所标识的资源的响应消息报头。 |
HEAD | 请求获取由Request-URI所标识的资源的响应消息报头。 |
OPTIONS | 请求查询服务器的性能,或查询与资源相关的选项和需求。 |
PUT | 请求服务器存储一个资源,并用Request-URI作为其标识。 |
DELETE | 请求服务器删除由Request-URI所标识的资源。 |
TRACE | 请求服务器回送收到的请求信息,主要用语测试或诊断。 |
常见请求头 | 解释 |
---|---|
User-Agent | 客户端将它的操作系统、浏览器和其它属性告诉服务器 |
Host | 指定被请求资源的主机地址和端口号,如Host: www.2cto.com |
Connection | 当前连接是否保持,如Connection: Keep-Alive |
Accept-Language | 指定一种自然语言,如Accept-Language: zh-cn |
Accept | 浏览器可接受的MIME类型 |
HTTP响应:
HTTP/1.1 200 OK
Date: Thu, 28 Feb 2013 07:36:47 GMT
Server: BWS/1.0
Content-Length: 4199
Content-Type: text/html;charset=utf-8
Cache-Control: private
Expires: Thu, 28 Feb 2013 07:36:47 GMT
Content-Encoding: gzip
Set-Cookie: H_PS_PSSID=2022_1438_1944_1788; path=/; domain=.2cto.com
Connection: Keep-Alive
常见HTTP状态码 | 解释 |
---|---|
200 | 客户端请求成功 |
302 | 临时跳转,跳转的地址通过location指定 |
400 | 客户端请求语法错误,服务器无法识别 |
401 | 请求未经授权 |
403 | 服务器收到请求,但是拒绝提供服务 |
404 | 请求资源不存在 |
500 | 服务器内部错误 |
常见HTTP响应头 | 解释 |
---|---|
Server | WEB服务器名称,,如Server:Apache/1.3.6(Unix) |
Content-Type | 用来指明发送给接受者的实体正文的媒体类型 |
Content-Length | 指明实体正文长度 |
Keep-Alive | 保持连接时间 |
Date | 网站最后一次改变的格林时间 |