• 与http相关的前端面试题


    1、什么是http?

    http是超文本传输协议,是一个简单的请求-响应协议

    2、http的请求方式

    请求方式描述
    get1. 用来获取数据,对应select操作,不对服务器的数据进行增、删、改等操作;
    2.get会把请求的参数附加到url后面,这样是不安全的;
    3. HTTP协议并没有限制get请求的URL大小,但是不同的浏览器对其有不同的大小长度限制
    post1. 数据发送到服务器以创建或更新资源,侧重于更新数据,对应update;
    2.post请求的请求参数都是请求body中操作
    put数据发送到服务器以创建或更新资源,侧重于创建数据,对应insert操作
    delete用来删除指定的资源,它会删除URI给出的目标资源的所有当前内容,对应delete操作
    options用来描述了目标资源的通信选项,返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性
    headHEAD方法与GET方法相同,但没有响应体,仅传输状态行和标题部分。这对于恢复相应头部编写的元数据非常有用,而无需传输整个内容。
    connect用来建立到给定URI标识的服务器的隧道;它通过简单的TCP / IP隧道更改请求连接,通常实使用解码的HTTP代理来进行SSL编码的通信
    traceTRACE方法用于沿着目标资源的路径执行消息环回测试;它回应收到的请求,以便客户可以看到中间服务器进行了哪些(假设任何)进度或增量。

    3、http请求的完整过程简述

    浏览器输入一个URL回车后,会发生什么呢?

    1. 进行DNS域名解析,将地址解析成ip地址;
    2. 发起TCP三次握手,建立连接
    3. 建立连接成功后,浏览器发起http请求
    4. 服务端响应http请求,浏览器得到响应结果
    5. 浏览器解析响应结果,若遇到资源文件,再次发起请求
    6. 浏览器根据内核对页面进行渲染展示
    7. 通过TCP四次挥手断开连接

    4、常见的http状态码

    状态码含义
    2xx表示访问成功,正常状态,一般接口正常都是返回此状态
    200ok 一般用于get与post请求
    3xx重定向
    301永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
    302临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
    303表示必须临时重定向,查看其它地址。与301类似。使用GET和POST请求查看
    304未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,,这样可以减少网络开销。
    4xx客户端错误
    401用户未提供身份验证凭据,或者没有通过身份验证。例如:验证码错误/账号密码错误/没有携带Token
    403表示没有权限,服务器拒绝访问请求。
    404Not Found 这是最常见的错误,表示找不到系统资源,但是只是暂时性地,一个好记忆的点:找不到对象;
    5xx服务器错误
    500表示服务器程序错误,一个通用的错误信息。
    502作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应。一般是架构网关层问题
    503表示服务器繁忙,或者服务器负载,通常这只是一个临时状态。

    5、get和post的区别?

    1. get在浏览器回退时是无害的;而post会再次提交请求;
    2. get是从服务器获取数据,post是向服务器传递数据;
    3. get请求在传递参数的时候会附加到url后面,http协议没有对get请求的url的大小限制,但是不同浏览器对url有不同的大小限制;而post请求的参数是放在request body中的,所以post比get更安全;
    4. get产生一个TCP数据包;post产生两个TCP数据包。get方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于post,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

    建议

    • get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;
    • 在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;

    6、常见的http请求头和响应头

    请求头描述
    Accept浏览器能够处理的内容类型
    Accept-Charset浏览器能够显示的字符集
    Accept-Encoding浏览器能够处理的压缩编码
    Accept-Language浏览器当前设置的语言
    Connection浏览器与服务器之间连接的类型
    Cookie当前页面设置的任何Cookie
    Host发出请求的页面所在的域
    Referer发出请求的页面的URL
    User-Agent浏览器的用户代理字符串
    响应头描述
    Date表示消息发送的时间,时间的描述格式由rfc822定义
    server服务器名称
    Connection控制HTTP缓存
    content-type表示后面的文档属于什么MIME类型

    7、常见的 Content-Type 属性值有哪些?

    属性值作用
    application/x-www-form-urlencoded浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。该种方式提交的数据放在 body 里面,数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL转码。
    multipart/form-data:该种方式也是一个常见的 POST 提交方式,通常表单上传文件时使用该种方式。
    application/json:服务器消息主体是序列化后的 JSON 字符串。
    text/xml该种方式主要用来提交 XML 格式的数据。
  • 相关阅读:
    活动图高阶讲解-03
    Jupyter Notebook在指定位置打开
    有意识的神经网络之对比网络层和后意识层 加入em
    ZigBee 3.0实战教程-Silicon Labs EFR32+EmberZnet-2-02:开发环境搭建
    2022-08-20 C++并发编程(十三)
    【毕业季】研究生の毕业总结
    深度学习——Pay Attention to MLPs
    3、核心配置文件
    js 代理事件理解及应用场景
    07节-51单片机-矩阵键盘
  • 原文地址:https://blog.csdn.net/fangqi20170515/article/details/126714684