• 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

     

  • 相关阅读:
    PLC 控制系统资源
    .net core 控制台程序生成EXE
    EF Core 日志跟踪sql语句
    Oracle 设置自启动
    数据库批量插入数据
    字符串面试题系列之六:在字符串中删除特定的字符
    字符串面试题系列之五:删除字符串空格
    字符串面试题系列之四:字符串匹配二
    字符串面试题系列之三:左旋转字符串
    字符串面试题系列之二:连续最长数字串
  • 原文地址:https://www.cnblogs.com/wangyuming/p/7447681.html
Copyright © 2020-2023  润新知