1.HTTP2.0、1.1、1.0、0.9的区别?

  答:HTTP0.9:是HTTP协议的第一个版本,只允许发送get请求,并且不支持请求头。一次请求对应一次响应。是短连接。

    HTTP1.0:相比于0.9增加了:1)请求与响应支持头域(支持请求头);2)响应对象以一个响应状态行开始;3)响应对象不只局限于超文本;4)开始支持客户端通过post方法向web服务器提交数据,支持GET、HEAD、POST方法;5)支持长连接(但是默认还是使用短连接)

    HTTP1.1:加入了keeplive连接,允许在事务处理结束后TCP连接一直保存一种打开状态,即支持长连接,并且加入了缓存。

    HTTP2.0:多路复用,会将传输的信息分割成小的信息和帧,降低延迟,提高吞吐量。并且可以终端TCP连接。

2.HTTP中GET和POST的区别?

  答:从原理上,根据HTTP规范,GET用于信息获取,而且应该是安全和幂等的(安全的意味着该操作用于获取信息而非修改信息;幂等的意味着对于同一URL的多个请求应该返回同样的结果);根据HTTP规范,post表示可能修改服务器上资源的请求。

    从表面上,GET请求的数据会附在URL后,post的数据放在HTTP包体。

  总结:1)GET是从服务器上获取资源,post是向服务器发送资源;

     2)GET传输数据是通过URL请求,以id=value的形式置于URL后,并用?连接,多个请求数据间用&连接,这个过程是用户可见的。post传输数据是利用HTTP的post机制,将字段和对应的值封装存在请求实体中发送给服务器,这个过程用户是不可见的。

     3)GET传输因受url长度的限制,因此它传输的数据量小,但效率高;post可以传输大量数据,所以上传文件时只能用post方法。

     4)GET是不安全的,因为url是可见的,可能泄露私密信息;post较GET安全性高,因为参数不会保存在浏览器历史或web服务器缓存中。

     5)GET方法只支持ASCLL字符,向服务器传的中文字符可能会乱码;post支持标准字符集,可以传递中文字符。

3.一次HTTP请求从请求到返回的过程(访问一个url都经历了哪些事情)

  答:1)把URL分割成几个部分:协议、网络地址、资源路径。其中协议是从该计算机获取资源的方式,常见的是HTTP、FTP;网络地址指示该网络上哪一台计算机,可以实域名或IP地址;资源路径指示从服务器上获取哪一项资源。例如:http://www.baidu.com/index.jsp/  协议为http,网络地址为www.baidu.com,资源路径为index.jsp

    2)如果地址不是一个IP地址,通过DNS(域名系统)将该地址解析成IP地址。IP地址对应着网络上一台计算机,DNS服务器本身也有IP,你的网络设置包含DNS服务器的IP。

    3)如果地址不包含端口号,根据协议的默认端口号确定一个。例如:www.guoke.com不包含端口号,HTTP协议的默认端口号为80。

    4)向2)和3)确定的IP和端口号发起网络连接。

    5)根据HTTP协议要求,组织一个请求的数据包,里面包含大量请求信息,包含请求的资源路径、你的身份等。

    6)服务器响应请求,将数据返回给浏览器。

    7)如果6)返回的是一个页面,根据页面里一些外链的URL,例如图片的地址,按照1)-6)再次获取。

    8)开始根据资源的类型,将资源组织成屏幕上显示的图像,这个过程叫做渲染。

    9)将渲染好的页面图像显示出来,并开始响应用户操作。

HTTP面试常见题的更多相关文章

  1. python基础面试常见题

    1.为什么学习Python? Python是目前市面上,我个人认为是最简洁.最优雅.最有前途.最全能的编程语言,没有之一. 2.通过什么途径学习的Python? 通过自学,包括网上查看一些视频,购买一 ...

  2. jvm面试常见题

    背景:jvm相关题目面试必问,后面要深入的进行总结. JVM 面试知识整理 jvm调优命令 调优工具 Minor GC ,Full GC 触发条件 Minor GC触发条件:当Eden区满时,触发Mi ...

  3. C#面试常见题

    1. 简述 private. protected. public. internal 修饰符的访问权限. 答: private : 私有成员, 在类的内部才可以访问. protected : 保护成员 ...

  4. iOS面试常见题

    1.耶稣有13个门徒,当中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13个人围坐一圈,从第一个人開始循环报数,数到三排除,最后剩下的人就是叛徒 int people[13] = {1,2,3, ...

  5. 大型软件公司.Net面试常见题(含答案)

    1.a=10,b=15,在不用第三方变量的前提下,吧a.b互换 2.已知数组int[] max={6,5,2,9,7,4,0};用快速排序算法按降序对其进行排列,并返回数组 3.请简述面向对象的多态的 ...

  6. LeetCode面试常见100题( TOP 100 Liked Questions)

    LeetCode面试常见100题( TOP 100 Liked Questions) 置顶 2018年07月16日 11:25:22 lanyu_01 阅读数 9704更多 分类专栏: 面试编程题真题 ...

  7. Linux运维跳槽必备的40道面试精华题(转)

    Linux运维跳槽必备的40道面试精华题(转)   下面是一名资深Linux运维求职数十家公司总结的Linux运维面试精华,助力大家年后跳槽找个高薪好工作. 1.什么是运维?什么是游戏运维? 1)运维 ...

  8. Linux运维跳槽40道面试精华题

    Linux运维跳槽40道面试精华题 运维派 3天前 1.什么是运维?什么是游戏运维? 1)运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正常,在他运转的过程中,对他进行维护 ...

  9. 数据结构+算法面试100题~~~摘自CSDN

    数据结构+算法面试100题~~~摘自CSDN,作者July 1.把二元查找树转变成排序的双向链表(树) 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表.要求不能创建任何新的结点,只调 ...

随机推荐

  1. .NET Application,Session,Cookie,ViewState,Cache对象用法

    作用域 保存地址 生命周期Application 应用程序 服务器内存 IIS启动Session 整个站点 服务器内存 Session到时 默认20分钟Cashe 应用程序 服务器内存 应用程序的周期 ...

  2. 使用IntelliJ IDEA创建第一个Mawen项目

    咳咳...首先各位在学习SSM框架的时候,单个单个学完之后,老夫掐指一算(其实,我是个小鲜肉),各位必定会去整合SSM,这个时候,老夫又掐指一算,各位必定会碰到个mawen的东西,在这里,我可以告诉各 ...

  3. [Spring cloud 一步步实现广告系统] 9. 主类和配置文件

    搜索系统启动主类 /** * AdSearchApplication for 广告搜索服务启动类 * * @author <a href="mailto:magicianisaac@g ...

  4. Go-for循环

    一.第一种情况(死循环) package main import "fmt" func main() { for{ fmt.Println("fuck") } ...

  5. JS基础语法---arguments对象伪数组

    引入: //计算两个数字的和 function f1(x, y) { return x + y; } //计算三个数字的和 function f2(x, y, z) { return x + y + ...

  6. jeesite3环境部署时初始化数据库注意问题

    ---恢复内容开始--- 首先要修改jeesite.properties下数据库连接方式,注意选择自己的数据库 其次在pom.xml文件中修改对应的数据库连接方式 最后运行db文件夹下的init-db ...

  7. Java中的“scanf()、cin()、input()"

    最近在写一个Java程序时遇到一个问题,就是如何在Java里面输入数值,又叫做获取键盘输入值. 因为c语言里面有scanf(),C++里面有cin(),python里面有input().Java里面有 ...

  8. [日常] win10开启和安装ubuntu子系统

    在控制面板的程序与功能里启用和关闭windows功能打开,适用于linux的windows子系统 在微软商店里搜索ubuntu,直接点击安装就可以了 安装完成后的windows与linux的磁盘映射见 ...

  9. Python3——根据m3u8下载视频(上)之urllib.request

    干活干活,区区懒癌已经阻挡不了澎湃的洪荒之力了...... 运行环境:Windows基于python3.6 ---------------------------------------------- ...

  10. 我的朋友&值得学习的大佬

    @media only screen and (max-width: 360px) { #friedsGroup { columns: 1 !important; } } #MySignature{ ...