zoukankan      html  css  js  c++  java
  • 【HTTP】简单了解HTTP

    本来打算写一篇文章的,来介绍一下HTTP,结果发现想要写的内容太多了,那就分开写吧,正好这一系列的文章,我觉得应该能申请一个专栏了,不说废话了,正文开始
    我们都知道HTTP是一种协议,那么你对它了解有多少呢?今天就来聊聊HTTP

    两个容易混淆的概念

    URL(Uniform Resource Local):统一资源定位符
    URI(Uniform Resource Identifier):统一资源标识符
    从命名中,大概可以猜出来,URL是URI的子集。因为URL只是负责资源定位,但是URI才是掌管着资源的大权
    URI的格式:登录信息认证(可选)
          服务器地址(必须指定)
          服务器端口(可选,若省略,则是默认的)
          带层次的文件路径(指定特指资源)
          查询字符串(可选)
          片段标识符(标记出已获取资源中的子资源,可选)

    告知服务器的HTTP方法

    HTTP是一种不保持状态的协议,即无状态协议。比如你使用CSDN账号登录了你的博客,如果不保持状态,当你访问别人的博客要评论时,需要再次登录自己的账号。这样的状态肯定不是我们想要的,所以为了实现期望的保持状态功能,我们引入了cookie技术(这篇文章关于cookie与session做了一个比较,感兴趣可点击:session共享
    那么,我们就需要告知服务器,我们想要做什么。告知服务器意图的HTTP方法有以下:

    名称 说明
    GET 获取资源,用来请求访问已被URI识别的资源
    POST 传输实体主体
    PUT 传输文件
    HEAD 获得报文首部
    DELETE 删除文件
    OPTIONS 询问支持的方法
    TRACE 追踪路径,不常用,易引发XST(Cross-Site Tracing,跨站追踪)攻击
    CONNECT 要求用隧道协议连接代理

    获取部分内容的范围请求:
    以前的用户是没有待遇使用现在这种高速的带宽来访问互联网的,下载一个稍微大一点儿的文件就已经很吃力了,如果在下载过程中再遇到网络中断情况,就必须重新开始下载。想想也是挺崩溃的,对吧?所以为了解决这种问题,需要一种可恢复的机制,而要实现该功能需要指定下载的实体范围。像这样指定范围发送的请求叫做范围请求(Range Request)。
    范围请求,就要来说说内容协商机制。内容协商机制就是客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为合适的资源。使用到的技术一般有服务器驱动协商,客户端驱动协商和透明协商。

    GET与POST

    GET与POST方法比较相似,在这里做一下说明与比较:
    GET方法:查询字符串(名称/值对)是在 GET 请求的 URL 中发送的
    POST方法:查询字符串(名称/值对)是在 POST 请求的 HTTP 消息主体中发送的

    GET POST
    后退按钮/刷新 无影响 数据会被重新提交(浏览器应该告知用户数据会被重新提交)
    书签 可收藏为书签 不可收藏为书签
    缓存 能被缓存 不能缓存
    编码类型 application/x-www-form-urlencoded application/x-www-form-urlencoded 或 multipart/form-data,为二进制数据使用多重编码
    历史 参数保留在浏览器历史中 参数不会保存在浏览器历史中
    对数据长度的限制 有限制。当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符) 无限制
    对数据类型的限制 只允许 ASCII 字符 无限制,也允许二进制数据
    安全性 与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分.另外,在发送密码或其他敏感信息时绝不要使用 GET POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中
    可见性 数据在URL中对所有人都是可见的 数据不会显示在URL中
    通信数据转发程序:代理、网关、隧道

    正如小标题所示,来说说代理、网关和隧道。

  • 代理
  • 代理服务器的基本行为就是接收客户端发送的请求后,转发给其他服务器。代理不改变URI。
    那么我们为什么要使用代理服务器呢?代理服务器可以利用缓存技术,减少网络带宽流量,组织内部针对特定网站的访问控制,以获取访问日志为主要目的。代理有多种使用方法,按两种基准分类:一是否使用缓存,二是否会修改报文。
    缓存代理:代理转发响应时,缓存代理会预先将资源的副本(缓存)保存在代理服务器上。带代理再次接收到对相同资源的请求时,就可直接将之前缓存的资源作为响应返回。
    透明代理:转发请求或响应时,不对报文做任何加工的代理类型被称为透明代理。反之称为非透明代理。

  • 网关
  • 工作机制和代理十分相似。但网关能使通信线路上的服务器提供非HTTP协议服务。
  • 隧道
  • 隧道的目的是确保客户端能与服务器进行安全的通信。
查看全文
  • 相关阅读:
    python语言程序设计部分习题
    Python基础:Python运行的两种基本方式
    python简介及详细安装方法
    MTBF平均故障间隔时间(转)
    SSH远程登录配置文件sshd_config详解
    SSH服务详解(转)
    GCC编译之后的代码信息
    移动设备识别ID
    STM32CubeMX自建MDK工程的基本步骤
    职位英文缩写
  • 原文地址:https://www.cnblogs.com/zll-0405/p/12534153.html
  • Copyright © 2011-2022 走看看