什么是 HTTP 协议

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

HTTP 是基于 TCP/IP 协议的应用层协议。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。


HTTP 协议发展简史

  1. 最早版本是1991年发布的0.9版。该版本极其简单,只有一个命令GET。

  2. 1996年5月,HTTP/1.0 版本发布,内容大大增加。 任何格式的内容都可以发送。这使得互联网不仅可以传输文字,还能传输图像、视频、二进制文件。这为互联网的大发展奠定了基础。

  3. 1997年1月,HTTP/1.1 版本发布,只比 1.0 版本晚了半年。它进一步完善了 HTTP 协议,一直用到了20年后的今天,直到现在还是最流行的版本。


HTTP 协议工作原理

HTTP协议工作于客户端-服务端架构为上, 是一种请求应答式的.

浏览器(或其他客户端)作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。


HTTP协议格式

通信规则规定了客户端发送给服务器的内容格式,也规定了服务器发送给客户端的内容格式。

客户端发送给服务器的格式叫“请求协议”;

服务器发送给客户端的格式叫“响应协议”。

重点学习这两个格式。


请求协议格式

请求行   例:GET /images/logo.gif HTTP/1.1,表示从/images目录下请求logo.gif文件。
请求头   例:Accept-Language: en(很多请求头)
空行     必须的,服务通过这个空行来区别出请求头和请求体
请求体   有时候也叫消息体,是可选的,get请求时无请求体,post请求会有。

浏览器向服务器发送请求时必须依据该格式,否则服务器无法识别。http协议中的请求行中可以有8种请求方法,但是目前为止,通用和大家都在用的只有两种:post请求和get请求。


响应协议格式

状态行;
响应头信息;
空行;
响应体(响应正文)


GET 请求和 POST 请求的区别

注意区别就是请求数据的传送方式:

1.GET 方法

查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:

/test/demo_form.asp?name1=value1&name2=value2

2.POST 方法

请求数据(名称/值对)是在 POST 请求的 HTTP 消息主体中发送的:

POST /test/demo_form.asp HTTP/1.1
Host: w3schools.com

name1=value1&name2=value2

比较

项目 GET POST
后退按钮/刷新 无害 数据会被重新提交(浏览器应该告知用户数据会被重新提交)。
书签 可收藏为书签 不可收藏为书签
缓存 能被缓存 不能缓存
编码类型 application/x-www-form-urlencoded application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。
历史 参数保留在浏览器历史中。 参数不会保存在浏览器历史中。
对数据长度的限制 是的。当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。 无限制。
对数据类型的限制 只允许 ASCII 字符。 没有限制。也允许二进制数据。
安全性 与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。在发送密码或其他敏感信息时绝不要使用 GET ! POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。
可见性 数据在 URL 中对所有人都是可见的。 数据不会显示在 URL 中。
Copyright © 李振超 2018 all right reserved,powered by Gitbook
该文件最后修订时间: 2018-02-25 07:12:09

results matching ""

    No results matching ""