HTTP协议

Posted 培训机构笔记整理

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP协议相关的知识,希望对你有一定的参考价值。

一.为什么学习HTTP协议

 

 

 

绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。HTTP协议是网络中应用最广泛的一种协议。

 

二.什么是HTTP协议

场景:说英文的张三 说日语的李四 要如何进行沟通。

 

明确HTTP协议是:1,浏览器和服务器沟通;

2,处于浏览器和服务器沟通的中间位置;

概念

HTTPHyperText Transfer Protocol  超文本传输协议

 

浏览器请求服务器时,需要规定请求信息的格式;服务器响应浏览器,也需要规定响应信息的格式。这个规定,就是HTTP协议。

 

HTTP协议的特点

1) 不仅支持B/S模式,还支持C/S模式(talent)。

2) 灵活,支持任意类型的数据。

3) 无连接特性(不是不连接的意思),浏览器对服务器进行的每一次完整的请求,过程走完以后都会被断开连接。

4) 无状态特性,指的是协议对事物的处理不具有记忆能力。(你和同桌说话的时候,普通话不会知道上次和你同桌说话的内容和人)

 

HTTP协议的分类

HTTP请求  HTTP响应

 

三.HTTP请求

组成部分

请求行,请求头,空白行,请求数据

 

 

请求行

结构:请求方式 请求的资源路径 协议名和协议的版本号

 

注意:以上三个部分以空格隔开!

 

 

请求头

请求头是由一个一个的请求协议项组成的,

协议项:协议项的名:协议项的值

 

 

 

host当前url中所要请求的服务器的主机名(域名)

accept-encoding是浏览器发给服务器,声明浏览器支持的压缩编码类型  比如gzip

accept_charset表示,浏览器支持的字符集

referer表示,此次请求来自哪个网址

accept-language可以接收的语言类型,cnen

cookie如果之前当前请求的服务器在浏览器端设置了数据(cookie),那么当前浏览器再次请求该服务器的时候,就会把对应的数据带过去

user-agent用户代理,当前发起请求的浏览器的内核信息

accept表示浏览器可以接收的数据类型,text/htmlimage/img

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

content-lengthpost只有post提交的时候才会有的请求头,显示的是当前要提交的数据的长度(字节)

if-modified-sinceget表示,在客户端向服务器请求某个资源文件时,询问此资源文件是否被修改过

content-typepost:用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件

空白行

 

 

用来分隔请求头和下面的请求数据部分的。

请求数据

注意:只有当请求方式为POST时,才会有请求数据。

 

 

 

四.HTTP响应

组成部分

包括 状态行,响应头,空白行,响应数据

 

 

状态行

结构:协议名和协议版本号 状态码 状态描述

 

 

 

响应头

由一个一个的响应协议项组成,

结构:响应项的名:响应项的值

 

 

 

server服务器主机信息

date响应时间

last-modified文件最后修改时间(对应请求中:if-modified-since

content-length响应主体的长度(字节)

content-type响应内容的数据类型:text/htmlimage/png

location重定向,浏览器遇到这个选项,就立马跳转(不会解析后面的内容)

refresh重定向(刷新),浏览器遇到这个选项就会准备跳转,刷新一般有时间限制,时间到了才跳转,浏览器会继续向下解析

content-encodeing文件编码格式

cache-control缓存控制,no-cached不要缓存

空白行

用来分隔响应头和响应数据的!

响应数据

通俗的理解为:展示到浏览器当中的内容。

 

 

 

状态码

1xx:表示请求尚未完成;

2xx:表示请求和响应都没有问题;

3xx:表示重定向;

4xx:表示请求出现错误,响应失败;

5xx:表示服务器出现错误,响应失败;

 

常见的状态码:

200  请求和响应都成功

301 302  重定向

404  请求的页面找不到

500  服务器出错

 

五.HTTP协议的应用

案例:跳转

Code2.php

 

 

 

刷新(跳转)

 

 

 

 

案例:PHP(代码)模拟HTTP请求

我们需要通过使用PHPCURL扩展来实现模拟HTTP请求。

CURL扩展

既然要使用扩展,那么我们需要做些准备工作。

准备工作

第一步,确认配置extension_dir

 

 

第二步,确认扩展文件php_curl.dll存在并且(在php.ini)开启扩展

 

 

 

 

2.5步,将相应的类库文件放置到PHP默认的类库文件夹下

 

 

 

 

PHP根目录下的下面两个文件复制到上面这个文件夹中:

 

 

 

 

 

第三步,重启apache并且检查扩展开启成功

 

 

 

实现模拟HTTP请求

Curl_init函数      初始化一个curl会话连接

Curl_setopt函数    设置curl选项

Curl_exec函数      执行一个curl会话

Curl_close函数      关闭一个curl会话连接

 

Code5.php

 

 

PHP模拟HTTP请求的原理

步骤:1.请求1-2.请求2-3.响应2-4.响应1

 

 

以上是关于HTTP协议的主要内容,如果未能解决你的问题,请参考以下文章

HTTP协议工作原理是啥 HTTP协议工作原理介绍【详解】

HTTP 之 HTTP协议(HTTP协议概述HTTP消息缓存控制相关头部Cookie相关头部)

HTTP协议

Linux-http协议(应用层协议)-http概述-http格式-http版本-http方法-http状态码

大话http协议

Http协议简单解析