zoukankan      html  css  js  c++  java
  • php HTTP协议

    HTTP协议

    超文本传输协议(HTTPHyperText Transfer Protocol)

    最常见B/s架构中,使用,浏览器端与服务器端数据交互协议。

    协议约定好的一套语法规则。

    规定:请求数据格式,与响应数据格式

    应用协议

    请求协议

    规范,浏览器向服务器发送数据格式

    以上内容,就是浏览器在服务器的http://shop.kang.com/index.php?p=back&c=Admin&a=login请求时,所发送的数据。

    请求数据分成三部分(列子中其实2个部分

    请求行:request_line

    请求数据的第一行,用来说明当前请求的最基本信息。

    三块组成:

    GET /index.php?p=back&c=Admin&a=login HTTP/1.1 换行

    方式 资源地址没有域名) 协议版本  (回车换行CRLF)

    请求request_header

    请求头信息,请求标头

    浏览器需要传输给服务器的属性数据。

    # 主机,请求的主机。用于标识一台web服务器上的其中一个虚拟主机的。

    Host: shop.kang.com

    # 用户代理UA,什么发出的请求。

    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0

    # 可以接受的内容类型

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

    # 可以接受的语言

    Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3

    # 可以接受的数据编码类型(压缩编码)

    Accept-Encoding: gzip, deflate

    # 携带的cookie数据

    Cookie: PHPSESSID=i76sa2297sp1adlfk3e4eja612

    # tcp连接类型 keep-alive保持激活

    Connection: keep-alive

    # Keep-Alive: 30 保持连接的时间段秒

    # 缓存控制选项

    Pragma: no-cache

    Cache-Control: no-cache

    注意语法格式:

    ,由标识与内容组,使用冒号分隔标识与冒号不能存在空格)

    每个头占用一行,结尾使用CRLF(回车换行

    可以存在多个头

    信息结束使用空行标志

    请求主体:request_content

    请求主要用户数据。

    就是POST数据。

    如果方式为POST,则需要请求主体部分GET没有请求主

    操作请求

    通过浏览器所携带属性,完成特定功能。

    多语言程序(I18n,国际化程序)

    项目:提供多套语言版本。

    浏览器:请求时,携带属性,告知服务器,需要那种语言。

    通过请求头:Accept-Language 告知服务器,希望使用的语言

    项目:可以获取浏览器需要的语言,载入相应的语言包,做展示。

    获取

    找到最佳匹配:

    项目存在默认的语言。(浏览器需要的,项目都没有提供)

    确定浏览器可以接受的语言列表,找到服务器中,最匹配(权重依次匹配

    PHP发出请求(模拟请求)

    采集程序。

    公共平台开发。

    发出请求:

    连接目标服务器发送符合请求协议格式的数据。

    服务器就会将其视为请求,发出响应!

    连接:

    Fsockopen();建立一个internet连接

     处理请求数据:

    服务器发送,发出请求。

    通过函数 fwrite即可完成。(fwrite可以向文件和网络资源位置发送数据

    获取服务器的响应数据

    使用 fgetS()完成

    Feof,(end of file)用于检测是否到到数据流末尾。

    断开连接

    POST请求

    存在请求主体数据。

    请求行:POST

    请求头:存在对请求主体的描述

    请求主体:post数据

     

    CURL-Client URL

    PHP扩展。

    可以用来模拟URL客户端浏览器请求代理)的工具扩展。

    开启扩展

    Apacherestart

    Tip

    依赖类库:

    Php目录

    以上文件拷贝到系统目录(windows中),php目录设置为path环境变量

    模拟GET

    Curl资源 = curl_init()初始化curl

    curl_setopt(curl资源,选项标志,选项值)

    curl_exec(资源)发出请求

    curl_close()关闭资源

    POST请求

    处理响应数据

    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);//

    请求执行时,不是将响应直接输出,而是以返回值的形式处理。

    POST文件上传

    Post数据使用文件地址,前使用@标志为文件而不是字符串。

    处理响应头

    CURLOPT_HEADER:是否获取响应头数据

    处理会话COOKIE

    模拟登录)

    接收服务器设置的cookie,并存储于请求代理端

    CURLOPT_COOKIEJAR 指定存储服务器所设置的cookie变量存储位置。

    发出请求时携带拥有cookie

    CURLOPT_COOKIEFILE

    请求时携带的cookie数据所在的位置。

    响应协议

    也是三部分:

    1响应行2响应头3响应主体

    响应行

    响应数据第一行,响应结果的概述

    http/1.1 302 FoundCRLF

    版本 响应状态码 响应消息

    响应状态码,和响应消息,一一对应。

    302 Found:重定向,配合响应头Location使用。

    404 Not Found请求资源不存在。

    403 Forbidden:没有权限访问该地址

    200 ok 请求成功

    500 Server Internal Error 服务器内部错误

    响应

    服务器告知浏览器属性信息。

    响应主体

    主体数据通过浏览器的查看源代码所看到的内容)

    操作响应

    操作响应头,header()可以

    操作响应主体,任何的输出,都是响应主体。echo printvar_dumpPHP标签之外的所有HTML代码)

    控制器浏览器缓存

    Expires有效期,时间GMT时间,格林威治平时。

    Gmdate() 时间戳格式化为格林威治平时。

    D,星期

    M,月(三个英文月)

    HTTP下载

    下载:文件从服务器端传输到浏览器端。发生于服务器响应时。

    PHP仅仅需要将需要下载的内容作为响应主体输出即可。

    通过响应头Content-Disposition告知浏览器,接受到响应主体后的处理方式。

    attachment 表示以附件的方式处理响应主体。

    如果是文件的下载:

    文件内容作为响应主体输出即可!

    控制下载的文件名(默认为请脚本名)

    控制主体类型:

    细致控制:

    主体大小。

  • 相关阅读:
    tensorflow2.0 GPU和CPU 时间对比
    第一次使用FileZilla Server
    PremiumSoft Navicat 15 for Oracle中文破解版安装教程
    Unmapped Spring configuration files found. Please configure Spring facet or use 'Create Default Context' to add one including all unmapped files.
    ng : 无法加载文件 D: odejs ode_global g.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
    angular
    Github上优秀的go项目
    win10---file explore 中remove quick access folder
    react--useEffect使用
    linux---cat 和 grep 的妙用
  • 原文地址:https://www.cnblogs.com/ybygb-geng/p/9848232.html
Copyright © 2011-2022 走看看