• http请求的request和response


    一. HTTP请求

    HTTP请求是由客户端发出的消息,用来使服务器执行动作.发出的消息包括起始行,Headers,Body.

    起始行

    起始行包含三个元素:

    1. HTTP方法
      一个动词(像GET,PUT或者POST)或者一个名词(想HEAD或者OPTIONS),用来描述要执行的动作.例如,GET表示要获取资源,POST表示向服务器推送数据等.
    2. 请求目标
      • 请求目标,通常是一个URL,或者是协议,端口和域名的绝对路径.
      • 请求的各式会根据不同的HTTP方法而异,可以是:
      • 一个绝对路径,末尾跟上一个'?'和查询字符串,这种形式成为原始形式,通常被GET,POST,HEAD和OPTIONS方法所使用.
    POST / HTTP 1.1
    GET /background.png HTTP/1.0
    HEAD /test.html?query=alibaba HTTP/1.1
    OPTIONS /anypage.html HTTP/1.0
    
    * 一个完整的URL,被称为绝对形式,主要在GET连接到代理时使用.
    
    GET http://developer.mozilla.org/en-US/docs/Web/HTTP/Messages HTTP/1.1
    
    * 由域名和可选端口(以':'为前缀)组成的URL的authority component,称为authority form,仅在使用CONNECT简历HTTP隧道时才使用.
    
    CONNECT developer.mozilla.org:80 HTTP/1.1
    
    * 星号形式(asterisk form),一个简单的星号("*").配合OPTIONS方法使用,代表整个服务器.
    
    OPTIONS * HTTP/1.1
    
    1. HTTP版本(HTTP version),定义了剩余报文的结构

    Headers

    请求的HTTP headers遵循和HTTP header相同的基本结构:不区分大小写的字符串,紧跟着的冒号(':')和一个结构取决于header的值.整个header(包括值)由一行组成.

    • 请求头可以分为很多组:
      • General headers:例如Via,适用于整个报文.
      • Request headers:例如User-Agent,Accept-Type等
      • Entity headers:例如Content-Length,适用于请求的body.
        ALT

    Body

    请求的最后一部分是它的body,不是所有的请求都有一个body,如GET,HEAD,DELETE和OPTIONS等获取资源的请求,通常不需要body.有些类似于POST请求将数据发送到服务器以更新数据的请求,就会需要body.

    • Body可以分为两类:
      • Single-resource bodies:由一个单文件组成.该类型body由两个header定义:Content-Type和Content-Length.
      • Multiple-resource bodyies:由多部分组成,每一部分包含不同的信息位.

    二. HTTP响应

    状态行

    HTTP响应的起始行被称作状态行,包含以下信息:

    1. 协议版本:通常为HTTP/1.1
    2. 状态码(status code):表明请求是成功或失败.常见的成功码有200,201,300等,失败码有400,401,500等.
    3. 状态文本(status text):一个简短的,纯粹的信息,通过状态码的文本描述,帮助人们解读HTTP消息.
      典型的状态码:HTTP/1.1 404 Not Found。

    Headers

    响应的HTTP headers和其他header相同的结构:不区分大小写的字符串,紧跟着的冒号(':')和一个结构取决于header类型的值.

    • 响应头可以分为几组:
      • General headers:例如Via,适用于整个报文.
      • Request headers:例如Vary和Accept-Ranges,提供其他不符合状态行的关于服务器的信息.
      • Entity headers:例如Content-Length,适用于请求的body.如果请求中没有任何的body,则不会发送这类的头文件
        ALT

    Body

    响应最后一部分是body,不是所有的响应都有body,具有状态码(如201或204)的响应,通常不会有body.

    • Body可分为三类:
      • Single-resource bodies:由已知长度的单个文件组成.该类型body由两个header定义:Content-Type和Content-Length.
      • Single-resourcebodies:由未知长度的单个文件组成,通过将Transfer-Encoding设置为chunked来使用chunks编码.
      • Multiple-resource bodies:由多部分body组成,每部分包含不同的信息段.
  • 相关阅读:
    贪心算法解汽车加油站问题
    Kickstart Practice Round 2017---A
    win8.1系统下安装ubuntu实现双系统实践教程
    2017年1月15日--牛客网
    想写点什么而已
    Java中this和super的用法总结
    数据库练习(16年12月27日)-- 牛客网
    Technical Development Guide---for Google
    Java 自动装箱与拆箱(Autoboxing and unboxing)
    [LeetCode] Department Highest Salary -- 数据库知识(mysql)
  • 原文地址:https://www.cnblogs.com/magicianyin/p/8529441.html
Copyright © 2020-2023  润新知