zoukankan      html  css  js  c++  java
  • http协议中的一些小常识

    http协议这部分的知识很重要,在面试的时候也会经常问起来。


    先来看一看什么是http协议:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。


    关于http的版本,也经常在面试的时候会提及,当前用的是HTTP 1.1,是的,你没有看错,是1.1,经常提及的也总共只有0.9,1.0,1.1这3个版本;HTTP/1.0,这是第一个在通讯中指定版本号的HTTP 协议版本,至今仍被广泛采用,特别是在代理服务器中。HTTP/1.1是当前版本。持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式同时发送多个请求,以便降低线路负载,提高传输速度。HTTP/1.1相较于 HTTP/1.0 协议的区别主要体现在:1,缓存处理;2,带宽优化及网络连接的使用;3,错误通知的管理;4,消息在网络中的发送;5,互联网地址的维护;6,安全性及完整性。


    其实啊,HTTP就是一个通信规则,通信规则规定了客户端发送给服务器的内容格式,也规定了服务器发送给客户端的内容格式。其实我们要学习的就是这个两个格式!客户端发送给服务器的格式叫“请求协议”;服务器发送给客户端的格式叫“响应协议”。


    http请求协议:

    一个http请求由基本由请求首行+请求头+请求体组成,

    请求方式有很多种:

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


    但我们常用的是get和post,下面就比较一下这2种,

    get和post
      get post
    后退按钮/刷新 没啥影响 数据会被重新提交(浏览器应该告知用户数据会被重新提交,就是弹出的框)
    书签 可收藏为书签 不可收藏为书签
    编码类型 application/x-www-form-urlencoded application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。
    历史 参数保留在浏览器历史中 参数不会保存在浏览器历史中
    对数据长度的限制 当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。注意,这个限制是特定的浏览器及服务器对它的限制 无限制,数据在body中啊。
    对数据类型的限制 只允许 ASCII 字符 没有限制。也允许二进制数据。
    安全性 与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。
    在发送密码或其他敏感信息时绝不要使用 GET !
    POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。
    可见性
    数据在 URL 中对所有人都是可见的 数据不会显示在 URL 中,在body中啊。
    缓存 能被缓存 不能缓存

    一般我们就使用这2种,大家可以看看这篇帖子:为什么http用的时候不能用POST方式替代全部的GET方式?


    http响应协议:

    响应由响应首行+响应头+响应体组成,

    响应协议中有个非常重要的东西是响应码,响应码有多种,下面来看看,

    响应码
    数字 意义
    1xx 信息响应类,表示接收到请求并且继续处理微笑
    2xx 处理成功响应类,表示动作被成功接收、理解和接受偷笑
    3xx 重定向响应类,为了完成指定的动作,必须接受进一步处理吐舌头
    4xx 客户端错误,客户请求包含语法错误或者是不能正确执行敲打
    5xx 服务端错误,服务器不能正确执行一个正确的请求惊恐

    一般来说,我们能从响应码中看出这次请求是否成功,或者是发生了什么~

    另外,可以在HTML中指定响应头,在HTMl页面中可以使用<meta http-equiv="" content="">来指定响应头,

    例如在页面中给出<meta http-equiv="Refresh" content="3;url=http://www.baidu.cn">,表示浏览器只会显示此页面3秒,然后自动跳转到百度。


    好了,这些就是我在平时学习的时候所了解到的一些关于http的知识,都是一些比较基础的东西,做个总结,有需要的看看就好哈~

    http


  • 相关阅读:
    扫面线模板
    (动态规划、栈)leetcode 84. Largest Rectangle in Histogram, 85. Maximal Rectangle
    tmux 常见命令汇总
    leetcode 221
    leetcode 319 29
    (贪心)leetcode 392. Is Subsequence, 771. Jewels and Stones, 463. Island Perimeter
    leetcode 982 668
    Python import 同文件夹下的py文件的函数,pycharm报错
    Windows里Anaconda-Navigator无法打开的解决方案
    Windows下 gpu版 Tensorflow 安装
  • 原文地址:https://www.cnblogs.com/Arry10/p/7731806.html
Copyright © 2011-2022 走看看