码迷,mamicode.com
首页 > Web开发 > 详细

HTTP协议

时间:2017-08-29 14:23:29      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:说话   响应协议   开启   普通话   htm   encode   文件的   baidu   xhtml   

一.为什么学习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协议

标签:说话   响应协议   开启   普通话   htm   encode   文件的   baidu   xhtml   

原文地址:http://www.cnblogs.com/wangyuming/p/7447681.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!