zoukankan      html  css  js  c++  java
  • 【接口】【面试题】http协议相关面试题

    浏览器输入 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(返回数据)

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

  • 相关阅读:
    Android学习系列(34)App应用之发布各广告平台版本
    Android拓展系列(6)CM9源码下载和编译
    Android拓展系列(8)Vim插件便捷管理(使用git submodule和pathogen)
    [Android应用]《幽默笑话》V1.0 Beta 版本发布!
    [Android应用]《养生视线》V2.1 正式版本粉墨登场!
    Android设计模式系列(9)SDK源码之适配器模式
    企业定制软件开发的两个核心问题
    持续部署才是王道
    组织模式 Introduction
    高性能计算摘要
  • 原文地址:https://www.cnblogs.com/zhuzhubaoya/p/10469188.html
Copyright © 2011-2022 走看看