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 表示以附件的方式处理响应主体。

    如果是文件的下载:

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

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

    控制主体类型:

    细致控制:

    主体大小。

  • 相关阅读:
    OpenCV3入门(八)图像边缘检测
    OpenCV3入门(七)图像形态学
    OpenCV3入门(六)图像滤波
    OpenCV3入门(五)图像的阈值
    OpenCV3入门(四)图像的基础操作
    OpenCV3入门(三)基本绘图函数
    OpenCV3入门(二)Mat操作
    OpenCV3入门(一)环境搭建与实验
    图像边缘检测
    图像增强之空间域锐化
  • 原文地址:https://www.cnblogs.com/ybygb-geng/p/9848232.html
Copyright © 2011-2022 走看看