zoukankan      html  css  js  c++  java
  • HTTP协议的学习笔记

    1. 讲讲你对http的理解。

    HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议,是一个客户端和服务器端请求和应答的标准。在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。

    用户打开浏览器,在地址栏输入URL、按下回车,到页面输出内容,这一系列的过程都在遵循HTTP协议。

    2. http协议包含哪些内容?

    HTTP是一个应用层协议,由请求和响应构成。这两种类型的消息由一个起始行、消息报头、请求正文组成。

    请求消息包括以下四个部分:
    请求行(request line)、请求头部(header)、空行和请求数据。

    第一部分:请求行,即第1行。用来说明请求类型,要访问的资源以及所使用的HTTP版本。
    GET说明请求类型为GET,/a.html为要访问的资源,该行的最后一部分说明使用的是HTTP1.1版本。
    第二部分:请求头部,紧接着请求行之后的部分(图中第2-10行),用来说明服务器要使用的附加信息。
    Host:指出请求的目的地。
    User-Agent:服务器端和客户端脚本都能访问它,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
    第三部分:空行,请求头部后面的空行是必须的,即使第四部分的请求数据为空,也必须有空行。
    第四部分:请求数据也叫主体,可以添加任意的其他数据。这个例子的请求数据为空。

    响应消息也由四个部分组成:
    状态行、消息报头、空行和响应正文。

    第一部分:状态行,即第1行。由HTTP协议版本号、状态码、状态消息三部分组成。
    HTTP/1.1表明HTTP版本为1.1版本,状态码为304,状态消息为Not Modified。
    第二部分:消息报头,图中第2-5行。用来说明客户端要使用的一些附加信息。
    第三部分:空行,消息报头后面的空行是必须的。
    第四部分:响应正文,服务器返回给客户端的文本信息。

    3. 一次http请求,具体的流程是什么?

    客户端发送一个请求(Request)给服务器,服务器在接收到这个请求后将生成一个响应(Response)返回给客户端。一次HTTP操作称为一个事务,其工作过程可分为四步:

    1)单击某个超链接,客户端与服务器建立连接,HTTP协议开始工作。
    2)建立连接后,客户端发送一个请求给服务器。
    3)服务器接到请求后,给予相应的响应信息。
    4)客户端接收服务器返回的信息并显示在用户的显示屏上,然后客户端与服务器断开连接。

    4. http有哪些方法?

    GET:请求获取Request-URI所标识的资源。
    POST:在Request-URI所标识的资源后附加新的数据。
    HEAD:请求获取由Request-URI所标识的资源的响应消息报头。
    PUT:请求服务器存储一个资源,并用Request-URI作为其标识。
    DELETE:请求服务器删除Request-URI所标识的资源。
    TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断。
    CONNECT:保留将来使用。
    OPTIONS:请求查询服务器的性能,或查询与资源相关的选项和需求。

    5. post和get的区别&post为什么比get安全?

    1)GET是从服务器上获取数据,
    POST则是向指定的资源提交要被处理的数据。
    注:不论是GET还是POST,都可以向服务器传送数据,只不过传送数据的位置不同;都可以从服务器上获取数据。只不过GET的主要任务是获得数据,但在获得数据之前也可以向服务器提交一些数据;POST的主要任务是提交数据,但在提交数据之后服务器也会向用户端返回一些显示用的数据。

    2)GET请求数据按照查询字符串(名称/值对)方式,放置在HTTP请求协议头(headers)中,也就是URL之后,
    POST提交的数据则放在实体的主体(request-body)中,按照查询字符串(名称/值对)相对应的方式,传递到所指向URL。

    3)GET限制数据集的值必须为ASCII字符,GET提交的数据会以variable=value的形式附加在url之后,以?来分隔URL和数据,以&来分隔参数;如果数据是英文或数字,原样发送,如果数据是中文或其他字符,则进行base64编码,
    POST没有数据类型的限制,允许二进制数据。

    4)GET方式提交的数据最多只能是1024字节,
    POST支持较大数据传输。
    注:这里的限制指的是整个URL长度,而不是参数值数据长度。HTTP协议对GET和POST都没有对URL长度进行限制,这个限制是特定的浏览器及服务器出于安全、稳定性等方面的考虑,给URL长度进行了限制。

    5)在From提交的时候,如果不指定Method,则默认为GET请求。

    6)POST比GET相对安全
    GET所发送的数据是URL的一部分,数据在地址栏上可见。但是如果通过第三方工具比如抓包工具,也能看到POST方式传送的数据,因此POST方式也不是绝对的安全,只是比GET相对安全些。

    在语义上(RESTFUL视角),
    GET的是获取指定URL上的资源,是读操作。不论对某个资源GET多少次,资源的状态是不会改变的,在这个意义上,我们说GET是安全的(不是被密码学或者数据保护意义上的安全)。因为GET是安全的,所以GET返回的内容可以被浏览器,Cache服务器缓存起来。
    POST是可能修改变服务器上的资源的请求,资源的状态可能会发生变化,所以POST是不安全的,每次提交的POST,都会被认为这个操作会修改资源的状态。于是,浏览器在你按下F5(刷新)的时候跳出确认框,缓存服务器不会缓存POST请求返回内容。
    简而言之,就是
    GET可以被缓存,POST不能。
    GET可收藏为书签,POST不可收藏为书签。
    GET请求的URL,参数会被浏览器保留在历史中,POST参数不会。

    6. http的状态码有哪些?

    状态代码由三位数字组成,第一个数字定义了响应的类别,共分五种类别:
    1xx:指示信息--表示请求已接收,继续处理
    2xx:成功--表示请求已被成功接收、理解、接受
    3xx:重定向--要完成请求必须进行更进一步的操作
    4xx:客户端错误--请求有语法错误或请求无法实现
    5xx:服务器端错误--服务器未能实现合法的请求

    常见状态码

    状态码 描述
    200 OK 客户端请求成功
    400 Bad Request 客户端请求有语法错误,不能被服务器所理解
    401 Unauthorized 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
    403 Forbidden 服务器收到请求,但是拒绝提供服务
    404 Not Found 请求资源不存在
    500 Internal Server Error 服务器发生不可预期的错误
    503 Server Unavailable 服务器当前不能处理客户端的请求,一段时间后可能恢复正常

    7. http请求中,怎么确定数据传输的安全呢?

    比如app验证用户是否为合法用户,会分析他们请求的ip、浏览器信息(这些信息存在http协议的head头里),如果ip不合法,就把相关ip封掉。

  • 相关阅读:
    innerHTML和innerText的区别
    AJAX是什么? AJAX的交互模型(流程)?同步和异步的区别? AJAX跨域的解决办法?
    事件初理解2不兼容
    那些宽高
    面试题
    事件初理解2不兼容
    ajax初理解
    attribute和property的区别
    启动nuxt项目fsevents报错
    CSS实现三栏布局(5种)
  • 原文地址:https://www.cnblogs.com/sunshineliulu/p/7358183.html
Copyright © 2011-2022 走看看