zoukankan      html  css  js  c++  java
  • web服务器之Apache请求与响应

    http 协议及报文头部结构

    http协议:http/0.9, http/1.0, http/1.1, http/2.0,http/3.0

    http协议:stateless 无状态, 服务器无法持续追踪访问者来源
    解决http协议无状态方法

    cookie 客户端存放

    session 服务端存放

    http事务:一次访问的过程

    请求:request

    响应:response

    HTTP报文结构
    协议查看或分析的工具:tcpdump, wireshark,tshark

    参考资料:https://developer.mozilla.org/zh-CN/docs/Web/HTTP
    

    HTTP请求报文

    request报文格式

    <method> <request-URL> <version>
    <headers>
    <entity-body>
    

    范例:

    GET / HTTP/1.1
    Accept: */*
    Accept-Encoding: gzip, deflate
    Connection: keep-alive
    Host: www.longxuan.com
    User-Agent: HTTPie/0.9.4
    

    范例:

    #post.html
    <form action="index.html" method="POST">
    username:<br>
    <input type="text" name="username" >
    <br>
    password:<br>
    <input type="text" name="password" >
    <br><br>
    <input type="submit" value="Submit">
    </form>
    

    HTTP响应报文

    response报文格式

    <version> <status> <reason-phrase>
    <headers>
    <entity-body>
    

    范例:

    HTTP/1.1 200 OK
    Cache-Control: max-age=3, must-revalidate
    Connection: keep-alive
    Content-Encoding: gzip
    Content-Type: text/html; charset=UTF-8
    Date: Thu, 07 Nov 2019 03:44:14 GMT
    Server: Tengine
    Transfer-Encoding: chunked
    Vary: Accept-Encoding
    Vary: Accept-Encoding, Cookie
    

    HTTP报文格式详解

    Method 方法

    请求方法,标明客户端希望服务器对资源执行的动作,包括以下:

    GET: 从服务器获取一个资源
    HEAD: 只从服务器获取文档的响应首部
    POST: 向服务器输入数据,通常会再由网关程序继续处理
    PUT: 将请求的主体部分存储在服务器中,如上传文件
    DELETE: 请求删除服务器上指定的文档
    TRACE: 追踪请求到达服务器中间经过的代理服务器
    OPTIONS:请求服务器返回对指定资源支持使用的请求方法
    CONNECT:建立一个到由目标资源标识的服务器的隧道
    PATCH:用于对资源应用部分修改
    

    version版本

    HTTP/<major>.<minor>
    

    范例:

    HTTP/1.1
    

    status 状态码

    三位数字,标记请求处理过程中发生的情况

    参考资料:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status
    

    http协议状态码分类

    1xx:100-101 信息提示
    2xx:200-206 成功
    3xx:300-307 重定向
    4xx:400-415 错误类信息,客户端错误
    5xx:500-505 错误类信息,服务器端错误
    

    http协议常用的状态码

    200: 成功,请求数据通过响应报文的entity-body部分发送;OK
    301: 请求的URL指向的资源已经被删除;但在响应报文中通过首部Location指明了资源现在所处的新位
    置;Moved Permanently
    302: 响应报文Location指明资源临时新位置 Moved Temporarily
    304: 客户端发出了条件式请求,但服务器上的资源未曾发生改变,则通过响应此响应状态码通知客户端;
    Not Modified
    307: 浏览器内部重定向
    401: 需要输入账号和密码认证方能访问资源;Unauthorized
    403: 请求被禁止;Forbidden
    404: 服务器无法找到客户端请求的资源;Not Found
    500: 服务器内部错误;Internal Server Error,比如:cgi程序没有执行权限
    502: 代理服务器从后端服务器收到了一条伪响应,如无法连接到网关;Bad Gateway
    503: 服务不可用,临时服务器维护或过载,服务器无法处理请求,比如:php服务停止,无法处理php程序
    504: 网关超时
    

    reason-phrase原因短语

    状态码所标记的状态的简要描述

    headers首部字段头

    首部字段包含的信息最为丰富。首部字段同时存在于请求和响应报文内,并涵盖 HTTP报文相关的内容信息。使用首部字段是为了给客服端和服务器端提供报文主体大小、所使用的语言、认证信息等内容首部字段是由首部字段名和字段值构成的,中间用冒号":”分隔字段值对应,即key/value 键/值对单个 HTTP首部字段可以有多个值

    参考资料:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers
    

    首部的分类:

    1. 通用首部:请求报文和响应报文两方都会使用的首部
    2. 请求首部:从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加内容、客户端信息、
      请求内容相关优先级等信息
    3. 响应首部:从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客
      户端附加额外的内容信息
    4. 实体首部:针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有
      关的的信息
    5. 扩展首部

    通用首部:

    Date: 报文的创建时间
    Connection:连接状态,如keep-alive, close
    Via:显示报文经过的中间节点(代理,网关)
    Cache-Control:控制缓存,如缓存时长
    MIME-Version:发送端使用的MIME版本
    Warning:错误通知
    

    请求首部:

      Accept:通知服务器自己可接受的媒体类型
      Accept-Charset: 客户端可接受的字符集
      Accept-Encoding:客户端可接受编码格式,如gzip
      Accept-Language:客户端可接受的语言
      Client-IP: 请求的客户端IP
      Host: 请求的服务器名称和端口号
      Referer:跳转至当前URI的前一个URL
      User-Agent:客户端代理,浏览器版本
    
    条件式请求首部:
      Expect:允许客户端列出某请求所要求的服务器行为
      If-Modified-Since:自从指定的时间之后,请求的资源是否发生过修改
      If-Unmodified-Since:与上面相反
      If-None-Match:本地缓存中存储的文档的ETag标签是否与服务器文档的Etag不匹配
      If-Match:与上面相反
    
    安全请求首部:
      Authorization:向服务器发送认证信息,如账号和密码
      Cookie: 客户端向服务器发送cookie
      
    代理请求首部:
      Proxy-Authorization: 向代理服务器认证
    

    响应首部:

    信息性:
      Age:从最初创建开始,响应持续时长
      Server:服务器程序软件名称和版本
      
    协商首部:某资源有多种表示方法时使用
      Accept-Ranges:服务器可接受的请求范围类型
      Vary:服务器查看的其它首部列表
    
    安全响应首部:
      Set-Cookie:向客户端设置cookie
      WWW-Authenticate:来自服务器对客户端的质询列表
    

    实体首部:

    Allow: 列出对此资源实体可使用的请求方法
    Location:告诉客户端真正的实体位于何处
    Content-Encoding:对主体执行的编码
    Content-Language:理解主体时最适合的语言
    Content-Length: 主体的长度
    Content-Location: 实体真正所处位置
    Content-Type:主体的对象类型,如text
    缓存相关:
    ETag:实体的扩展标签
    Expires:实体的过期时间
    Last-Modified:最后一次修改的时间
    

    entity-body实体

    请求时附加的数据或响应时附加的数据,例如:登录网站时的用户名和密码,博客的上传文章,论坛上的发言等。

  • 相关阅读:
    SAP OPEN UI5 Step 8: Translatable Texts
    SAP OPEN UI5 Step7 JSON Model
    SAP OPEN UI5 Step6 Modules
    SAP OPEN UI5 Step5 Controllers
    SAP OPEN UI5 Step4 Xml View
    SAP OPEN UI5 Step3 Controls
    SAP OPEN UI5 Step2 Bootstrap
    SAP OPEN UI5 Step1 环境安装和hello world
    2021php最新composer的使用攻略
    Php使用gzdeflate和ZLIB_ENCODING_DEFLATE结果gzinflate报data error
  • 原文地址:https://www.cnblogs.com/xuanlv-0413/p/14839143.html
Copyright © 2011-2022 走看看