zoukankan      html  css  js  c++  java
  • 关于面试总结-http协议相关面试题

    前言

    在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会话保存。

    日行一善, 日写一撰
  • 相关阅读:
    POJ 3672 水题......
    POJ 3279 枚举?
    STL
    241. Different Ways to Add Parentheses
    282. Expression Add Operators
    169. Majority Element
    Weekly Contest 121
    927. Three Equal Parts
    910. Smallest Range II
    921. Minimum Add to Make Parentheses Valid
  • 原文地址:https://www.cnblogs.com/xiyuan2016/p/14349037.html
Copyright © 2011-2022 走看看