前端实习面试题整理(四)【HTTP相关】
1、HTTP基本概念:
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。设计Http最初的目的是为了提供一种发布和接收HTML页面的方法。它可以使浏览器更加高效。Http协议是以明文方式发送信息的,如果黑客截取了Web浏览器和服务器之间的传输报文,就可以直接获得其中的信息。
2、HTTP报文格式:
分为请求报文和响应报文。
①请求报文:
<methods><request-URL><version> <headers>:<value> <entity-body>
大体上是以上这样一个结构:分为三部分(把第三行的空行算上就是四部分)
a.请求行:包括请求方法(常见的GET和POST)、请求地址、和协议版本
b.请求头部:分为多行,每一行都由“头部字段:值”组成,常见的有Host、User-Agent:浏览器类型、Accept:接受数据类型(*/*表示所有)、Accept-Language:客户端接受的语言、Connection:连接方式(close或keepalive)、Cookie:存储于客户端的扩展字段等。
c.请求实体:对应传过去的json数据
②响应报文:
结构与请求报文一致,也是三个部分:
a.响应行:包括HTTP版本、状态码(比如200、304、404、500等)、原因短语(OK、Not Found等)
b.响应头部:分为多行,每一行都由“头部字段:值”组成
c.响应实体:响应数据
3、HTTP请求方式:
常见的请求方式有:GET\POST\PUT\HEAD\DELETE\OPTIONS\TRACE
①GET:
GET通常用于获取服务端的数据,通过URL来传输数据:URL?key=value&key=value【key=value叫做查询字符串】,很明显这个过程中用户是可以看到,不安全。
②POST:
POST可以向指定的资源提交要被处理的数据,通过HTTP的POST机制提交,将字段与对应值封存在请求实体中发送给服务器,用户不可见,相对安全。
③GET与POST的区别:
a.GET重点在从服务器上获取资源,POST重点在向服务器发送数据
b.GET向服务器传数据是通过在URL后面拼接参数,所以只能以文本形式传输,而且数据量只有4kb左右,安全性低,会被浏览器缓存(GET多个请求时浏览器不会请求服务器而 是向缓存中抓取数据),好处是速度快
POST向服务器传数据是通过实体,数据量没有限制(默认8M,但是可以修改),相对安全,请求不会被缓存,也不会保留在浏览器的历史记录中
c.GET只支持ASCII字符,POST支持标准字符库
4、HTTP状态码:
1** :信息,服务器收到请求,需要请求者继续执行操作
100:继续,客户端继续其请求
101:切换协议,服务器根据客户端的请求切换协议,但是只能向高级协议切换
2** :成功,操作被成功接收并处理
200:请求成功,一般用于GET和POST
201:已创建,成功请求并创建了资源
202:已接受,已经接受请求但未处理完成
203:非授权信息,请求成功,但返回的meta信息部在原始的服务器,而是一个副本
204:无内容,服务器成功处理,但未返回内容,在未更新网页的情况下,可确保浏览器继续显示当前文档
205:重置内容,服务器处理成功,用户终端应重置文档视图,可通过此返回码清除浏览器的表单域
206:部分内容,服务器成功处理了部分GET请求
3** :重定向,需要进一步的操作以完成请求
300:多种选择,请求的资源包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端选择
301:永久移动,请求的资源已被永久移动到新的URI,浏览器会自动定向到新的URI,今后任何新的请求都会使用新的URI代替
302:临时移动,资源被临时移动,客户端应继续使用原有的URI
303:查看其他地址,与301类似,使用GET和POST请求查看
304:未修改,请求的资源未被修改,服务器返回304时不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息支出客户端希望只返回指定日期修改之后的资源
305:使用代理,所请求的资源必须通过代理访问
306:已被废弃的HTTP状态码
307:临时重新定向,与302类似,使用GET请求重定向
4** :客户端错误,请求包含语法错误或无法完成请求
400:客户端请求的语法错误,服务器无法理解
401:请求要求用户的身份认证
402:保留
403:服务器理解客户端的请求,但是拒绝执行
404:服务器无法根据客户端的请求找到资源
405:客户端请求中的方法被禁止
406:服务器无法根据客户端请求的内容特性完成请求
407:请求要求代理的身份认证
408:服务器等待客户端发送的请求时间过长,超时
409:服务器完成客户端的PUT请求时可能返回此代码,服务器处理请求时发生了冲突
温馨提示: 本文由杰米博客推荐,转载请保留链接: https://www.jmwww.net/file/web/10138.html
- 上一篇:Docker部署NETCORE应用程序
- 下一篇:VB.net 通过句柄操作其他窗口