zoukankan      html  css  js  c++  java
  • HTTP 协议的基本知识,包括请求流程、请求方法等

    一、什么是http协议?

      HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,RFC 1945定义了HTTP/1.0版本。其中最著名的就是RFC 2616。RFC 2616定义了今天普遍使用的一个版本——HTTP 1.1。

      超文本传输协议是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。

      HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

      HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。

    二、http协议特点

      HTTP协议的主要特点可概括如下:

      1、支持客户/服务器模式。

      2、 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

      3、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

      4、无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

      5、无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。

      另一方面,在服务器不需要先前信息时它的应答就较快。

    三、HTTP请求的方法:

      HTTP/1.1协议中共定义了八种方法(有时也叫“动作”),来表明Request-URL指定的资源不同的操作方式
     
      1、OPTIONS
      返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性
      2、HEAD
      向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。
      3、GET
      向特定的资源发出请求。它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。
      4、POST
      向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。Loadrunner中对应POST请求函数:                                          web_submit_data,web_submit_form
      5、PUT
      向指定资源位置上传其最新内容
      6、DELETE
      请求服务器删除Request-URL所标识的资源
      7、TRACE
      回显服务器收到的请求,主要用于测试或诊断
      8、CONNECT
      HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
      注意:
      1)方法名称是区分大小写的,当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Mothod Not Allowed);当服务器不认识或者不支持对应的请求方法时,应返回状态码        501(Not Implemented)。
      2)HTTP服务器至少应该实现GET和HEAD/POST方法,其他方法都是可选的,此外除上述方法,特定的HTTP服务器支持扩展自定义的方法。

      get 和 post区别

      区别:

        get请求无消息体,只能携带少量数据

        post请求有消息体,可以携带大量数据(理论上无限大)

      携带数据的方式:

        get请求将数据放在url地址中

         post请求将数据放在消息体中

      GET请求请提交的数据放置在HTTP请求协议头中,而POST提交的数据则放在实体数据中; 
      GET方式提交的数据最多只能有1024字节,而POST则没有此限制。 

    四、HTTP协议请求流程

        1.打开HTTP连接。一定要记住HTTP是一种无状态协议。正因为如此,对于每一个请求你都要建立一个新的连接。

      2.设置HTTP请求头部。这里面包含要传送的数据类型(二进制)和数据的总长。

      3.发送请求。将二进制流写到服务器。

      4.读取请求。目标servlet程序将被调用并接受HTTP请求数据。servlet程序就调用所有必要的参数选择相应的方法。注意,如果这是这个客户端的第一次请求,一个服务器对象的新的实例就会被创建。

      5.调用方法。方法将会被服务器端的对象调用。

      6.初始化方法响应。如果调用的方法抛出一个异常,客户将接收到出错信息。否则,返回的类型(如果有)将会被发送。

      7.设置HTTP响应头。在响应头中,一定会设置待发送数据的类型和长度。

      8.发送响应。二进制数据流将从Web服务器发送并返回给客户端。

  • 相关阅读:
    【leetcode】1020. Partition Array Into Three Parts With Equal Sum
    【leetcode】572. Subtree of Another Tree
    【leetcode】123. Best Time to Buy and Sell Stock III
    【leetcode】309. Best Time to Buy and Sell Stock with Cooldown
    【leetcode】714. Best Time to Buy and Sell Stock with Transaction Fee
    【leetcode】467. Unique Substrings in Wraparound String
    【leetcode】823. Binary Trees With Factors
    【leetcode】143. Reorder List
    【leetcode】1014. Capacity To Ship Packages Within D Days
    【leetcode】1013. Pairs of Songs With Total Durations Divisible by 60
  • 原文地址:https://www.cnblogs.com/ldl326308/p/9464391.html
Copyright © 2011-2022 走看看