前言

在PC浏览器的地址栏输入一串URL,然后按Enter键这个页面渲染出来,这个过程中都发生了什么事?这个是很多面试官喜欢问的一个问题
如果测试只是停留在表面上点点点,不知道背后的逻辑,是无法发现隐藏的bug,只能找一些页面上看得到的bug。
测试人员如果想在技术上有所提升,必然要都懂接口(API)测试,这也是近来年越来越多的公司意识到接口测试的重要性,招聘的时候要招一个中高级的测试人员,接口测试是必备技能了。

浏览器输入url按回车背后经历了哪些?

1.在PC浏览器的地址栏输入一串URL,然后按Enter键这个页面渲染出来,这个过程中都发生了什么事?

  1. 首先,在浏览器地址栏中输入url,先解析url,检测url地址是否合法
  2. 浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容。若没有,则跳到第三步操作。(浏览器缓存:浏览器会记录DNS一段时间,因此,只是第一个地方解析DNS请求;操作系统缓存:如果在浏览器缓存中不包含这个记录,则会使系统调用操作系统,获取操作系统的记录(保存最近的DNS查询缓存);路由器缓存:如果上述两个步骤均不能成功获取DNS记录,继续搜索路由器缓存;ISP缓存:若上述均失败,继续向ISP搜索。)
  3. 在发送http请求前,需要域名解析(DNS解析),解析获取相应的IP地址。
  4. 浏览器向服务器发起tcp连接,与浏览器建立tcp三次握手。
  5. 握手成功后,浏览器向服务器发送http请求,请求数据包。
  6. 服务器处理收到的请求,将数据返回至浏览器
  7. 浏览器收到HTTP响应
  8. 浏览器解码响应,如果响应可以缓存,则存入缓存。
  9. 浏览器发送请求获取嵌入在HTML中的资源(html,css,javascript,图片,音乐······),对于未知类型,会弹出对话框。
  10. 浏览器发送异步请求。
  11. 页面全部渲染结束。

GET和POST的区别

2.get和post请求区别,这个是被问烂的题了

首先这个题看似简单,实际上是个送命题!如果你百度搜到的标准答案可能是这样的(本标准答案参考自w3schools):

  • GET在浏览器回退时是无害的,而POST会再次提交请求。
  • GET产生的URL地址可以被Bookmark,而POST不可以。
  • GET请求会被浏览器主动cache,而POST不会,除非手动设置。
  • GET请求只能进行url编码,而POST支持多种编码方式。
  • GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
  • GET请求在URL中传送的参数是有长度限制的,而POST么有。
  • 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
  • GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
  • GET参数通过URL传递,POST放在Request body中。

如果我告诉你,你死记硬背的这些所谓“标准答案”不是面试官想要的,你肯定不服,首先从安全性讲,get和post都一样,没啥所谓的哪个更安全
get请求参数在url地址上,直接暴露,post请求的参数放body部分,按F12也直接暴露了,所以没啥安全性可言

“GET参数通过URL传递,POST放在Request body中”这个其实也不准,post请求也可以没body,也可以在url传递呢?

如果我告诉你get请求和post请求本质上没区别,你肯定不信!
GET和POST有一个重大区别,简单的说:
GET产生一个TCP数据包;POST产生两个TCP数据包。
长的说:
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

详情可以参考这篇,写的挺好的《GET和POST两种基本请求方法的区别 》

cookies机制和session机制的区别

3.cookies机制和session机制的区别,这个也是经常会问的

  • cookies数据保存在客户端,session数据保存在服务器端;
  • cookies可以减轻服务器压力,但是不安全,容易进行cookies欺骗;
  • session较安全,但占用服务器资源

HTTP状态码

4.HTTP状态码2xx,3xx,4xx,5xx分别是什么意思?这个是最基本的了,这个得熟练掌握,如果这个状态码都分不清,基本功就很弱了,印象分会大打折扣!

  • 200 请求已成功,请求所希望的响应头或数据体将随此响应返回。
  • 201 请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,且其 URI 已经随Location 头信息返回
  • 202 服务器已接受请求,但尚未处理
  • 301 (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
  • 302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
  • 303 (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
  • 304 (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
  • 305 (使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。
  • 307 (临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

  • 401 当前请求需要用户验证。如果当前请求已经包含了 Authorization 证书,那么401响应代表着服务器验证已经拒绝了那些证书
  • 403 服务器已经理解请求,但是拒绝执行它。与401响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交
  • 404 请求失败,请求所希望得到的资源未被在服务器上发现
  • 500 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现。
  • 501 服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。
  • 502 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
  • 503 由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。

http协议请求方式

5.http协议有哪几种请求方式?
GET, POST 和 HEAD、OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

http和https区别

6.http和https区别?

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

HTTPS和HTTP的区别主要如下:

总的来说: HTTPS=SSL+HTTP

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
(这个只是默认端口不一样,实际上端口是可以改的)

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

报文

7.HTTP请求报文与响应报文格式
请求报文包含三部分:
a、请求行:包含请求方法、URI、HTTP版本信息
b、请求头部(headers)字段
c、请求内容实体(body)
响应报文包含三部分:
a、状态行:包含HTTP版本、状态码、状态码的原因短语
b、响应头部(headers)字段
c、响应内容(body)实体

post请求body

8.常见的 POST 提交数据方式

application/x-www-form-urlencoded
multipart/form-data
application/json
text/xml

DNS

9.什么是DNS?
域名解析服务。将主机名转换为IP地址。如将http://www.cnblogs.com/主机名转换为IP地址:211.137.51.78

无状态

10.什么是Http协议无状态协议?怎么解决Http协议无状态协议?

(1)、无状态协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息
(2)、无状态协议解决办法: 通过1、Cookie 2、通过Session会话保存。


1、http与https的区别

http协议:以明文发送内容,默认端口是80

https协议:在http协议下加入ssl协议,数据加密传输,更安全。因为ssl依靠证书验证服务器身份,所以https协议需要到ca申请证书。ttps默认端口是443

http协议与https协议的区别

2、ssl协议的内容

SSL位于tcp/udp与各种应用层协议之间,为数据传输提供安全支持。ssl分两层:ssl握手协议(高层)和ssl记录协议(底层)。ssl记录协议提供数据封装、压缩、加密等功能。ssl握手协议提供身份认证、协商加密算法等功能

SSL协议原理详解

3、http请求完整过程

域名解析-建立tcp连接(3次握手)-浏览器发送http请求-服务器响应http请求-浏览器得到html代码-浏览器解析html代码-请求HTML代码中的资源-关闭tcp连接(四次挥手)-浏览器对页面进行渲染

HTTP请求的完全过程

4、http状态码:

分别说下:100、200、300、400、500、501、502、503、504的代表的含义

分类 分类描述
1** 信息,服务器收到请求,需要请求者继续执行操作
2** 成功,操作被成功接收并处理(成功表示服务器成功接收了请求但未必进行处理)
3** 重定向,需要进一步的操作以完成请求
4** 客户端错误:请求包含语法错误或无法完成请求
5** 服务器错误:服务器在处理请求的过程中发生了错误

接口自动化测试系列(一):HTTP状态码

5、DNS是什么?HTTPDNS与DNS的区别?

DNS:域名解析,过程(浏览器缓存-操作系统缓存-本地域名服务器LocalDNS-根域名服务器)

HttpDNS:根据http请求获取域名的真实ip地址,解决LocalDNS的流氓行为

HttpDNS与传统DNS的区别

6、get与post请求的区别

get与post本质上无区别,都是基于tcp/udp的http请求

get:参数放在url中,只发送一次请求,http header和data一并发送出去,服务器响应200(返回数据)

post:参数放在request body中,发送两次请求,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)

GET和POST两种基本请求方法的区别

7、什么时候使用get()什么时候使用post()?

get请求会被浏览器缓存记录,post不会,敏感数据不应该使用get()

全部用POST不是十分合理,最好先把请求按功能和场景分下类,对数据请求频繁,数据不敏感且数据量在普通浏览器最小限定的2k范围内,这样的情况使用GET。其他地方使用POST。

关于 HTTP GET/POST 请求参数长度最大值的一个理解误区

8、post()方法参数最大的长度

理论上讲,post()和get()是没有大小限制的。HTTP协议规范也没有进行大小限制,起限制作用的是服务器的处理程序的处理能力。

9、如何加速网络链接

使用长连接

10、如何维持长连接?

如何高效维持网络长连接

11、如何发送心跳包?

定时任务发送每隔固定周期发送一个心跳包

Socket之心跳包实现思路

系列(四)—Http协议相关推荐

  1. 分布式系列四: HTTP及HTTPS协议

    分布式系列四: HTTP及HTTPS协议 非常全面的一篇HTTP的文章: 关于HTTP协议,一篇就够了 还有一个帮助理解HTTPS的文章: 也许,这样理解HTTPS更容易 本文的一些描述摘自这篇文章 ...

  2. 摄像头 保存到外网服务器_【小喵科技】物联网教程系列四:喵家外网IOT服务器...

    HOT新品热卖中■■■■■ 双向海量教学课程 无论是家长还是老师,都可以给孩子一个更好的未来 分享给更多的人 加入我们吧! 夏至の时光 ▼往期精彩课程在文章末尾 ▼喵家外网IOT服务器--快速上手 在 ...

  3. sed修炼系列(四):sed中的疑难杂症

    sed系列文章: sed修炼系列(一):花拳绣腿之入门篇 sed修炼系列(二):武功心法(info sed翻译+注解) sed修炼系列(三):sed高级应用之实现窗口滑动技术 sed修炼系列(四):s ...

  4. 效率系列(四) VS常用快捷键

    写在前面的话 :最近博主整理了一些关于 Visual Studio 2017 的常用快捷键,希望可以帮助到大家更高效更愉快的打码 1.打开 快捷键 描述 Ctrl + Shift + N 新建项目 C ...

  5. iOS开发UINavigation系列四——导航控制器UINavigationController

    iOS开发UINavigation系列四--导航控制器UINavigationController 一.引言 在前面的博客中,我么你介绍了UINavigationBar,UINavigationIte ...

  6. Lync Server 2010的部署系列(四) outlook无法加入联机会议

    Lync Server 2010的部署系列(四) outlook无法加入联机会议 今天早上和一个深圳朋友使用outlook加入联机会议的时候,报错,提示如下图,故障描述:由于本机的限制,该操作已被取消 ...

  7. javaweb学习总结(四)——Http协议

    javaweb学习总结(四)--Http协议 一.什么是HTTP协议 HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用 ...

  8. 机器学习入门系列四(关键词:BP神经网络)

    机器学习入门系列四(关键词:BP神经网络) 标签: 机器学习神经网络 2016-01-12 15:28 80人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: 机器学习(3) 作者同类文章X 版 ...

  9. VS 中配置使用Visual SVN系列 四:SVN Server配置和使用

    VS 中配置使用Visual SVN系列 四:SVN Server配置和使用 1.打开 2.创建新的共享资源库 3.创建用户 4.设置用户对资源库的访问权限

  10. 掌握XML系列(四)---创建格式良好的XML文档

    掌握XML系列(四)---创建格式良好的XML文档 前言:创建良好格式的XML文档,虽然写了这些,其实,等到大家真正的看完之后美酒会发现,其实也很简单的,我们这里所做的是带着大家全面的看看怎么样创建. ...

最新文章

  1. 基础004:R语言数据处理和变换——dplyr
  2. C++ 获得指定路径文件的“修改日期”
  3. C++控制台读取和输出函数
  4. 004_JavaScript版本
  5. 全球及中国蓝牙智能锁行业发展格局及投资经营效益分析报告2022-2027年
  6. 从统计局抓取2016年最新的全国区县数据!!
  7. 为什么说,每个人都应该多读些书?
  8. springboot+thymeleaf+pageHelper带条件分页查询
  9. 多生产者-多消费者问题
  10. PhpExcel数组输出到Excel浏览器下载
  11. threejs加载obj模型_倾斜摄影三维模型几种常见的格式,你能说出哪些?
  12. WCF揭秘——可靠性会话功能
  13. mybatis mysql 模糊查询语句_mybatis+Spring mysql的模糊查询问题
  14. 8.ps输出属性-----状态
  15. 2018.11.09 bzoj4773: 负环(倍增+floyd)
  16. 从用户端到后台系统,严选分销教会我这些事
  17. 谁“杀死”了杀毒软件
  18. FLAG_ACTIVITY_CLEAR_TOP和singleTask的区别
  19. Limelight完成了对雅虎Edgecast的收购,合并后的公司更名为Edgio,成为全球边缘解决方案的领导者...
  20. MTK_核心功能模块内部结构框图

热门文章

  1. ios地图小例子和手势的使用 供大家参考一下呦
  2. ExtJs4学习(七)MVC中的Store
  3. CSS padding
  4. android 学习记录-----------android 活动 意图 碎片
  5. hdu1010 Tempter of the Bone
  6. 目标检测与转自背景减除
  7. [EffectiveC++]item22:Declare data members private
  8. return 返回值的问题
  9. gitbook安装与使用之windows下搭建gitbook平台
  10. 802.11MAC基础