zoukankan      html  css  js  c++  java
  • HTTP协议

    1 概述

    HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于服务器与本地浏览器间通信的传送协议,是一个基于TCP的应用层协议。

       

    2 特性

    • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。
    • 灵活:HTTP允许传输任意类型的数据对象。
    • 无状态:HTTP服务器默认不保存客户机的信息。
    • 支持B/S及C/S模式。

         

    3 通信过程

    1)客户机向服务器请求建立TCP连接;

    2)建立连接后,客户机发送一个请求报文给服务器;

    3)服务器接到请求后,给予相应的响应信息。

       

    4 请求报文

    一个典型的请求报文如下:

    GET /562f25980001b1b106000338.jpg HTTP/1.1

    Host img.mukewang.com

    User-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36

    Accept image/webp,image/*,*/*;q=0.8

    Referer http://www.imooc.com/

    Accept-Encoding gzip, deflate, sdch

    Accept-Language zh-CN,zh;q=0.8

    分为三个部分

    • 请求行:包括请求方法、访问路径、HTTP协议版本。
    • 请求头部:指定一些属性信息。
    • 主体:GET请求的主体为空,POST请求的主体包含表单信息。

    格式如下:

       

    5 响应报文

    一个典型的响应报文如下:

    HTTP/1.1 200 OK

    Date: Fri, 22 May 2009 06:07:21 GMT

    Content-Type: text/html; charset=UTF-8

       

    <html>

    <head></head>

    <body>

    <!--body goes here-->

    </body>

    </html>

    分为三个部分

    • 状态行:包括HTTP协议版本、状态码、状态信息。
    • 响应报头:指定一些属性信息。
    • 响应正文:服务器返回给客户端的文本信息。

       

    6 请求方法

    GET

    查询数据

    POST

    将实体提交到指定的资源,可能导致服务器上的数据新建或修改

    PUT

    新建或修改服务器上的指定数据

    DELETE

    删除服务器上的指定资源

    HEAD

    发送一个与GET请求类似的请求,但不要求返回响应正文,常用于故障跟踪

    OPTIONS 

    返回请求的资源所支持的方法

    TRACE

    追踪一个资源请求中间所经过的代理(该方法不能由浏览器发出)

       

    7 报头

    7.1 请求报头

    Accept

    客户端接受的MIME类型

    Accept-Encoding

    能接受的压缩格式

    Accept-Lanague

    能接受的语言

    Connection

    支持的keep-alive特性

    Host

    制定被请求的Internet主机和端口号

    User-Agent

    客户端操作系统、浏览器属性等

    7.2 响应报头

    Server

    服务器类型、操作系统

    Content-Type

    响应正文的媒体类型

    Content-Encoding

    响应的压缩格式

    Content-Language

    响应的自然语言

    Content-Length

    响应正文的字节长度

    Keep-Alive

    保持连接的时间

       

    8 状态码

    1xx:

    信息性状态码

    100:客户端应当继续发送请求

    101:通知客户端采用不同的协议来完成这个请求

    2xx

    成功状态码

    200:OK,正常响应

    201:Created,创建新实体

    202:Accepted,异步处理已请求成功

    204:No Content,响应实体为空

    3xx

    重定向状态码

    301:Moved Premanently,永久重定向,Location响应首部的值仍为当前URL,因此为隐藏重定向

    302:Found,临时重定向,显式重定向, Location响应首部的值为新的URL

    304:Not Modified,请求的资源未修改,比如本地缓存的资源文件和服务器上比较时,发现并没有修改,服务器返回一个304状态码,告诉浏览器,你不用请求该资源,直接使用本地的资源即可

    4xx

    客户端错误状态码

    400:Bad Request,请求的语法错误

    401:Unauthorized,请求资源无法授权给未验证用户

    403:Forbidden,请求资源未授权给当前用户

    404:Not Found,请求的URL资源并不存在

    405:Method Not Allowed,请求方法不匹配

    406 :Not Acceptable,请求资源的媒体类型不匹配

    5xx

    服务器端错误状态码

    500:Internal Server Error,服务器内部错误

    501:Not Implemented,服务器不支持当前请求

    502:Bad Gateway,前面代理服务器联系不到后端的服务器时出现

    504:Gateway Timeout,这个是代理能联系到后端的服务器,但是后端的服务器在规定的时间内没有给代理服务器响应

       

    9 HTTP版本

    9.1 HTTP/1.0

    这是第一个在通讯中指定版本号的HTTP协议版本,至今仍被广泛采用,特别是在代理服务器中。

    9.2 HTTP/1.1

    • 默认采用持久连接
    • 缓存处理
    • 支持MIME

    9.3 HTTP/2

    • 异步连接复用
    • 头压缩
    • 超文本传输

       

  • 相关阅读:
    [Codeforces Round #617 (Div. 3)] 题解 A,B,C,D,E1,E2,F
    [Codeforces Round #611 (Div. 3)] C. Friends and Gifts (随机大法好)
    [Hello 2020] D. New Year and Conference (ST表,排序)
    [Hello 2020] C. New Year and Permutation (组合数学)
    Codeforces Beta Round #7 C. Line (扩展欧几里德)
    扩展欧几里德
    Codeforces Round #349 (Div. 2) D. World Tour (最短路)
    HDU 4052 Adding New Machine (线段树+离散化)
    HDU 3265 Posters (线段树+扫描线)(面积并)
    HDU 1828 Picture (线段树+扫描线)(周长并)
  • 原文地址:https://www.cnblogs.com/xiongxx/p/6553280.html
Copyright © 2011-2022 走看看