zoukankan      html  css  js  c++  java
  • http协议简介

    http协议简介

    http协议:超文本传输协议 HyperText Transfer Protocol 
    web就是建立在http协议之上的。用于客户端(浏览器)和服务端(服务器)之间传输数据,是一种请求,响应的数据模型。


    一:协议的基本格式

    先看一个实际列子

    当我们在浏览器上输入 www.baidu.com 的时候,按下F12,然后回车。 
    以chrome浏览器为例,按照上面的操作,然后找到

    • Network -> 找到第一行 www.baidu.com 这个域名 -> 点击域名 -> 查看右边 Headers
    • Headers 下面的 Request Headers ,点击view source,会出现如下所示的内容(http的请求头)

      GET / HTTP/1.1 
      Host: www.baidu.com 
      Connection: keep-alive 
      Cache-Control: max-age=0

    • Headers 下面的 Response Headers ,点击view source,会出现如下所示的内容(http响应头)

      HTTP/1.1 200 OK 
      Cache-Control: private 
      Connection: Keep-Alive 
      Content-Encoding: gzip

    上面格式解释

    上面的Request Headers中

    • 起始行GET表示请求服务器的类型,称为方法(method), 随后的 / 斜线表示请求服务器的资源,斜线一般表示默认请求服务器的首页index.html或者default.html等,一般由服务器设置,最后的 HTTP/1.1 表示请求的协议是http,版本是1.1。
    • 下面的Host,Connection,Cache-Control 表示请求的头部属性,请求的首部字段

    这时候你也许会问,那我们提交搜索的数据在哪里呢? 
    好,在输入框中输入 你好 2个字进行搜索, 同样按照上面的步骤,按下F12进行观察,其实在上面的提交中会有这一段

    GET / HTTP/1.1 
    Host: www.baidu.com 
    Connection: keep-alive 
    Cache-Control: max-age=0 
    ie=utf-8&csq=1&pstg=20&mod=2&isbd=1&cqid=902ac78a000166d9&istc=277&ver=02dxTNAIQrLaje7ap_CI639W2bBrWSCUDIG&chk=5aa67b24&isid=27E4AA0692B22650&wd=%E4%BD%A0%E5%A5%BD&rsv_spt=1&rsv_iqid=0xa47ae6fc000016a4&issp=1&f=3&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=7&rsv_sug1=4&rsv_sug7=100&rsv_t=e6dal9luCwDrB6UKogflrgtWlwBQYVvvZTZc9ctjGuy5aI2HyqGKCyjJmZbFqAPQCNO7

    多出了最后一段内容,这个就是请求的内容了,只不过它是通过GET的方式提交的,把 你好 进行了编码,wd这个参数,然后还提交了很多其他的参数

    上面的Response Headers中

    • 起始行开头 HTTP/1.1 表示服务器对应的HTTP协议版本,紧接着的 200 OK 表示处理的结果状态码和简单的原因,后面的Cache-Control,Connection,Content-Encoding 这些都是返回的头部字段属性

    实际上后面还有返回的内容,就是搜索的结果,内容和头部属性会以一行空格来隔开,这个内容称为资源实体

    以上实际就是http的报文格式了

    二:http报文格式

    报文格式请求报文响应报文
    报文首部 GET / HTTP/1.1
    Host: www.baidu.com 
    Connection: keep-alive 
    Cache-Control: max-age=0
    HTTP/1.1 200 OK
    Cache-Control: private
    Connection: Keep-Alive
    Content-Encoding: gzip
    空行(CR+LF)    
    报文主体 ie=utf-8&csq=1&pstg=20&mod=2 服务器返回的内容

    三:返回的status code

    codemessage
    2xx 响应结果表明被正常处理了
    3xx 响应结果表明浏览器需要执行一些重定向请求
    4xx 表示客户端发生错误
    5xx 表示服务端发生错误
    codemessage
    200 ok
    301 永久重定向
    302 临时重定向
    304 304状态码返回时,不包含任何响应的主体部分内容
    307 临时重定向。和302有着相同的含义。307会遵照浏览器标准,不会从POST变成GET
    400 请求中存在语法错误
    401 表示发送的请求需要通过http认证。如果之前认证过一次,则表示认证失败
    403 表示请求资源访问被服务器拒绝了
    404 表示服务器上无法找到该资源
    500 表示服务器执行请求时发送错误
    503 表明服务器超载了,无法完成请求

    四:http请求的方法

    methodmessage支持的协议版本
    GET 获取资源 1.0、 1.1
    POST 用来传输实体 1.0、 1.1
    PUT 用来传输文件 1.0、 1.1
    HEAD 返回报文首部信息 1.0、 1.1
    DELETE 删除文件 1.0、 1.1
    OPTIONS 询问支持的方法 1.1
    TRACE 追踪路径 1.1
    CONNECT 与代理服务器通信时建立隧道 1.1
    LINK 建立和资源之间的联系 1.0
    UNLINK 断开连接关系 1.0
    == just do it ==
  • 相关阅读:
    Hdu1711 Number Sequence--Kmp模板题
    Trie入门--Poj3630 Phone List,查单词,HDU1251 统计前缀,PKU2503 Babelfish
    高次幂的组合数表示形式
    BZOJ1697 [Usaco2007 Feb] Cow Sorting牛排序
    1025 [SCOI2009]游戏(置换群,DP)
    Poj1721 Cards
    [Poi2003]Shuffle
    poj 3128 Leonardo's Notebook(置换的幂)
    POJ3734 Block母函数入门
    重心拉格朗日插值法
  • 原文地址:https://www.cnblogs.com/jiujuan/p/8867476.html
Copyright © 2011-2022 走看看