一、什么是 HTTP 协定
HyperText Transfer Protocol,超文本传输协定
HTTP:用于规定浏览器客户端和服务器之间的通信形式(规定)HTTP 协定次要规定了浏览器在发送申请给服务器时必须要遵循什么格局
以及规定了服务器在做出回应(响应)给浏览器时必须要遵循什么格局
HTTP 工作时所遵循的准则:
1) 一次申请必须对应一次响应
2) 申请只能是浏览器发送给服务器, 服务器只能被动的期待申请, 依据申请做出回应
二、HTTP 协定详解
HttpWatch 浏览器插件: 用于监听浏览器和服务器通信的内容
在一个较老版本的火狐浏览器上装置这个插件
1、Http 申请信息
第一局部:申请行
GET /news/hello.html HTTP/1.1
1)GET: 提交形式,HTTP 协定中一共规定了 7 种提交形式, 其中 5 种都不罕用, 只用 GET 和 POST
GET 提交和 POST 提交有什么区别? 前面讲
2)/news/hello.html: 申请资源门路, 显示了拜访哪一个利用下的哪一个资源文件
3)HTTP/1.1: 申请所遵循的协定和版本
第二局部: 申请报头 (若干申请头)
Host: localhost:8080 -- 指定拜访的主机名和端口
User-Agent: Mozilla/5.0..Firefox/25.0 -- 指定客户端的版本
Accept: ..text/html image/* -- 客户端可能承受的数据类型
...
(空白行)
第三局部: 申请实体
如果申请形式为 GET, 申请实体中不会有内容 (申请实体是空的);
如果申请形式为 POST, 并且申请中携带了数据, 此时申请实体中才会有内容;
2、Http 响应信息
第一局部:状态行
HTTP/1.1 200 OK
1)HTTP/1.1: 响应所遵循的协定和版本
2)200: 状态码, 示意申请解决的后果
200: 示意申请解决是胜利的!
302: 示意浏览器须要进一步申请才能够拜访到对应的资源
304/307: 示意让浏览器应用以前缓存的资源文件
404: 示意浏览器所申请的资源找不到 (可能是浏览器的拜访门路是谬误的!)
500: 示意服务器外部呈现谬误 (可能是服务器在解决申请时抛出了异样)
3)OK: 和后面的状态码对应
200 OK
404 Not Found
500 Internal Server Error
第二局部: 响应报头 (若干响应头)
Content-Type: text/html -- 响应给浏览器的数据类型,text/html 示意 html 格局的网页
Content-Length: 139 -- 响应给浏览器的数据长度,139 字节
...
(空白行)
第三局部: 响应实体
响应实体: 就是浏览器所申请的文件内容
比方: 浏览器申请服务器外部的一个 hello.html 文件, 服务器在响应时,
就会将 hello.html 文件的内容作为响应实体发送浏览器
补充内容 1:什么时候是 GET 提交?什么时候是 POST 提交?
HTTP 协定中一共规定了 7 种提交形式,但 5 种都不罕用,只用 GET 和 POST 提交。只有当应用表单(form)并且在表单上通过 method 属性指定提交形式为 POST 时, 才是 POST 提交, 其它的都是 GET 提交 (AJAX 除外)。思考题:判断以下申请是什么提交形式?(1)<form action="#"></form> --- GET 提交
(2)<form action="#" method="GET"></form> --- GET 提交
(3)<form action="#" method="POST"></form> --- POST 提交
(4) 点击超链接拜访服务器,例如:<a href="http://www.baidu.com"> 百度一下 </a> --- GET 提交
(5) 间接在浏览器的地址栏中书写 URL 地址拜访服务器 --- GET 提交
补充内容 2:GET 提交和 POST 提交的次要区别?
次要体现在申请参数传输过程的不雷同!
GET 提交:(次要用于向服务器申请数据)1) GET 提交是在地址栏 URL 地址的前面通过问号拼接参数将数据提交给服务器
因为数据会显示在地址栏上, 如果是隐衷数据, 十分的不平安
2) 通过地址栏提交数据, 数据量不能超过 1KB 或者 4KB
更不能提交文件
POST 提交:(次要用于向服务器提交数据)1) POST 不是通过地址栏提交数据, 而是通过申请实体将数据带给服务器
因为数据是通过申请实体发送数据, 绝对更加平安!
2) 通过申请实体提交数据, 数据量实践上没有限度!
能够提交文件
应用场景:
1) 如果只是单纯做一个跳转,或者只是拜访一个网页,申请中没有数据,都是应用 GET 提交。2) 如果在申请中有数据,但数据量不大,并且数据没有隐衷性,也尽量应用 GET 提交。3) 如果在申请中有数据,数据量比拟大或者数据较为隐衷,此时举荐应用 POST 提交,如果是提交文件,只能用 POST 提交。HTTP 协定书籍:<< 图解 HTTP 协定 >>