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

    HTTP协议

    基本概念

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

    特点

    • HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。
    • HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。(默认HTTP的端口号为80,HTTPS的端口号为443。)
    • HTTP协议永远都是客户端发起请求,服务器回送响应。这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。

    工作流程

    一次HTTP操作称为一个事务,其工作过程可分为四步:

    1)首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。

    2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。

    3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

    4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

    注释:如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。

    简单理解

    • webservice = http协议+XML
    • Rest=HTTP协议+json
    • 其他API也是一般使用http+XML/json来实现的

    HTTP请求信息和响应信息的格式

    请求

    • 请求行

      • 请求方法:GET、POST、PUT ...
      • 请求路径:URL的一部分
      • 所用的协议:HTTP
    • 请求头信息

      • 头信息结束之后,有一个空行作为头信息与主体信息的区分,即便没有主体信息依旧要有空行。
    • 请求主体信息

      • 可以没有
    • 响应信息

      • 响应行:协议版本 状态码
      • 状态文字
      • 响应头信息
      • key:value
      • key:value
      • contente-length:接下来主题的长度
      • 响应的内容

    HTTP协议中共定义了八种方法或者叫“动作”来表明对Request-URI指定的资源的不同操作方式

    • OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。
    • HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
    • GET:向特定的资源发出请求。
    • POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的创建和/或已有资源的修改。
    • PUT:向指定资源位置上传其最新内容。
    • DELETE:请求服务器删除Request-URI所标识的资源。
    • TRACE:回显服务器收到的请求,主要用于测试或诊断。

    虽然HTTP的请求方式有8种,但是我们在实际应用中常用的也就是get和post,其他请求方式也都可以通过这两种方式间接的来实现。

    • GET: 请求指定的页面信息,并返回实体主体。
    • HEAD: 只请求页面的首部。
    • POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。

    在表单里使用”post”和”get”有什么区别

    在Form里面,可以使用post也可以使用get。它们都是method的合法取值。但是,post和get方法在使用上至少有两点不同:

    1、Get方法通过URL请求来传递用户的输入。Post方法通过另外的形式。

    2、Get方式的提交你需要用Request.QueryString来取得变量的值,而Post方式提交时,你必须通过Request.Form来访问提交的内容。
    仔细研究下面的代码。

  • 相关阅读:
    csrf
    cookies和session区别
    关于Processing开发应用及发布分享的一些经验分享
    C++调用动态链接库DLL的隐式链接和显式链接基本方法小结
    C++最基本调用静态库的方法小结
    C++最基本调用动态链接库dll方法的小结
    基于Potplayer类播放器或Action!类录屏软件调取摄像头方式的定时抓拍保存图像方法小结
    基于Openframeworks调取摄像头方式的定时抓拍保存图像方法小结
    DOS使用技巧整理 [典型案例分享]
    正则表达式使用技巧整理
  • 原文地址:https://www.cnblogs.com/spmt/p/10491736.html
Copyright © 2011-2022 走看看