• HTTP请求和响应1:概述


    HTTP的报文分为请求报文和响应报文,打开一个web页面后,浏览器将发起一个HTTP请求报文。HTTPserver收到请求后将回送一个响应报文。

    报文的基本结构

    HTTP的请求和响应报文都由三个部分组成:对报文进行描写叙述的起始行(start line)、包括属性的首部(header)块、以及可选的包括数据的主体(body)部分。

    请求报文和响应报文在语法上有些区别,以下是请求报文的格式:

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

    以下是响应报文的格式:

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

    1)方法(method)
    client希望server对资源运行的动作。

    2)请求URL(request-URL)
    命名了所请求资源。或者URL路径组件的完整URL。

    3)版本号(ersion)
    报文所使用的HTTP版本号,格式为:
     HTTP/<major>.<minor>
    眼下使用的是1.1版本号。

    4)状态码(status)
    描写叙述了请求过程中所发生的情况。

    5)原因短语(reason-phrase)
    状态码的可读版本号,仅仅对人类有意义。

    6)首部(header)
    HTTP/1.1要求有效的请求或响应报文中必须包括特定的首部。每一个首部都包括一个名字。后面跟着一个冒号(:),然后是一个可选的空格,然后是一个值,最后是一个换行(CRLF)。首部由一个空行结束。

    7)实体(entity-body)
    包括由随意数据组成的数据框,报文能够不包括实体部分。

    以下看一个详细的样例。请求报文:

    GET /test/hi-there.txt HTTP/1.1
    Accept: text/*
    Host: www.joes-hardware.com

    响应报文:

    HTTP/1.1 200 OK
    Content-type: text/plain
    Content-length: 19
    
    Hi! I'm a message!

    方法

    经常使用的HTTP方法包含:
     GET:从server获取一份文档
     HEAD:仅仅从server获取文档的首部
     POST:向server发送须要处理的数据
     PUT:将请求的主体部分存储在server上
     TRACE:对可能经过代理server传送到server上去的报文进行跟踪
     OPTIONS:决定能够在server上运行哪些方法
     DELETE:从server上删除一份文档
    注意并非每一个server都实现了全部的方法。

    状态码

    状态码用于告诉client,发生了什么事情,状态码的分类例如以下:
     100~199:信息提示
     200~299:成功
     300~399:重定向
     400~499:client错误
     500~599:server错误
    以下列举了一些最常见的状态码:

     200 OK:成功。请求的全部数据都在响应主体中
     401 Unauthorized:须要输入username和password
     404 Not Found:server无法找到所请求URL相应的资源

    首部

    首部是一些名/值对的列表。向请求和响应报文中加入一些附加信息。
    HTTP规范定义了几种首部字段,应用程序也能够任意发明自己所用的首部。HTTP首部能够分为下面几类:
     1)通用首部;
     --既能够出如今请求报文中。也能够出如今响应报文中
     2)请求首部;
     3)响应首部;
     4)实体首部;
     --描写叙述主体的长度和内容。或者资源自身
     5)扩展首部。
     --规范中未定义的新首部
    经常使用的首部例如以下:
     Date:Tue,3Oct 1997 02:16:03 GMT ------server产生响应的日期
     Content-length:15040 ------实体的主体部分包括了15040字节的数据
     Content-type:image/gif ------实体的主体部分是一个GIF图片
     Accept:image/gif,image/jpeg,text/html ------client能够接收GIF图片和JPEG图片以及HTML
    长的首部行能够分为多行,提高可读性。多出来的每行前面要有一个空格或制表符(tab),如:
     Server: Test Server
      Version 10 ------以一个空格或者制表符開始

  • 相关阅读:
    20年美亚杯WRITE UP
    博客搬迁
    前端工程化1-模块
    移动端(h5)工具函数--视口适配(viewport)
    Understanding ES6 Modules(译)
    手写http请求并发、重试、超时函数
    两道编程题引发的思考
    前端基础走查(六):异步任务和事件循环
    vue 本地图片批量下载以及压缩成zip文件下载
    mybatis generator逆向工程
  • 原文地址:https://www.cnblogs.com/mthoutai/p/7010660.html
Copyright © 2020-2023  润新知