天天看点

面试题——HTTP/HTTPS(待续)说一下http协议(详细)

说一下http协议(详细)

1.http协议的主要特点

简单快速

每个资源(比如图片、页面)都通过 url 来定位。这都是固定的,在http协议中,处理起来也比较简单,想访问什么资源,直接输入url即可。

灵活

http协议的头部有一个数据类型,通过http协议,就可以完成不同数据类型的传输。

无连接

连接一次,就会断开,不会继续保持连接。

无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。

无状态

客户端和服务器端是两种身份。第一次请求结束后,就断开了,第二次请求时,服务器端并没有记住之前的状态,也就是说,服务器端无法区分客户端是否为同一个人、同一个身份。

有的时候,我们访问网站时,网站能记住我们的账号,这个是通过其他的手段(比如 session)做到的,并不是http协议能做到的。

2.HTTP报文的组成部分

http报文包括:请求报文和响应报文。

https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=1384047457,2091490325&fm=173&app=25&f=JPEG?w=639&h=377&s=C900E413199EC4C858F581DA0000C0B2

请求报文包括:请求行(请求方法、请求url、http协议及版本)、请求头头、空行、请求体

请求行:包括请求方法、请求的url、http协议及版本。

请求头:一大堆的键值对。

空行指的是:当服务器在解析请求头的时候,如果遇到了空行,则表明,后面的内容是请求体。

请求体:数据部分。

响应报文包括: 状态行(http协议及版本、状态码及状态描述)、响应头、空行、响应体

3.http请求方法

  • GET:获取资源
  • POST:传输资源
  • HEAD:获得报文首部
  • PUT:更新资源
  • DELETE:删除资源
  • TRACE: 回显服务器收到的请求
  • OPTIONS: 使服务器传回该资源所支持的所有HTTP请求方法
  • CONNECT: HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接

4.GET和POST的区别

  • ★浏览器在回退时,get不会重新请求,但是post会重新请求
  • ★get请求会被浏览器主动缓存,而post不会
  • get请求的参数,会报保留在浏览器的历史记录里,而post不会。
  • get请求在url中传递的参数有大小限制,基本是2kb,不同的浏览器略有不同。而post理论上是没用限制的。
  • get的参数是直接暴露在url上的,相对不安全。而post是放在请求体中的。

5.http状态码

简单版:

​ 100 Continue 继续,—般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息

​ 200 OK 正常返回信息

​ 201 Created 请求成功并且服务器创建了新的资源

​ 202 Accepted 服务器已接受请求,但尚未处理

​ 301 Moved Permanently 请求的网页已永久移动到新位置。

​ 302 Found 临时性重定向。

​ 303 See Other 临时性重定向,且总是使用 GET 请求新的 URI。

​ 304 Not Modified 自从上次请求后,请求的网页未修改过。

​ 400 Bad Request 服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。

​ 401 Unauthorized 请求未授权。

​ 403 Forbidden 禁止访问。

​ 404 Not Found 找不到如何与 URI 相匹配的资源。

​ 500 Internal Server Error 最常见的服务器端错误。

​ 503 Service Unavailable 服务器端暂时无法处理请求(可能是过载或维护)。

完整版

1**(信息类):表示接收到请求并且继续处理

100——客户必须继续发出请求

101——客户要求服务器根据请求转换HTTP协议版本

2**(响应成功):表示动作被成功接收、理解和接受

200——表明该请求被成功地完成,所请求的资源发送回客户端

201——提示知道新文件的URL

202——接受和处理、但处理未完成

203——返回信息不确定或不完整

204——请求收到,但返回信息为空

205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件

206——服务器已经完成了部分用户的GET请求

3**(重定向类):为了完成指定的动作,必须接受进—步处理

300——请求的资源可在多处得到

301——本网页被永久性转移到另—个URL

302——请求的网页被转移到—个新的地址,但客户访问仍继续通过原始URL地址,重定向,新的URL会在response中的Location中返回,浏览器将会使用新的URL发出新的Request。

303——建议客户访问其他URL或访问方式

304——自从上次请求后,请求的网页未修改过,服务器返回此响应时,不会返回网页内容,代表上次的文档已经被缓存了,还可以继续使用

305——请求的资源必须从服务器指定的地址得到

306——前—版本HTTP中使用的代码,现行版本中不再使用

307——申明请求的资源临时性删除

4**(客户端错误类):请求包含错误语法或不能正确执行

400——客户端请求有语法错误,不能被服务器所理解

401——请求未经授权,这个状态代码必须和WWW—Authenticate报头域—起使用

HTTP 401.1 — 未授权:登录失败

HTTP 401.2 — 未授权:服务器配置问题导致登录失败

HTTP 401.3 — ACL 禁止访问资源

HTTP 401.4 — 未授权:授权被筛选器拒绝

HTTP 401.5 — 未授权:ISAPI 或 CGI 授权失败

402——保留有效ChargeTo头响应

403——禁止访问,服务器收到请求,但是拒绝提供服务

HTTP 403.1 禁止访问:禁止可执行访问

HTTP 403.2 — 禁止访问:禁止读访问

HTTP 403.3 — 禁止访问:禁止写访问

HTTP 403.4 — 禁止访问:要求 SSL

HTTP 403.5 — 禁止访问:要求 SSL 128

HTTP 403.6 — 禁止访问:IP 地址被拒绝

HTTP 403.7 — 禁止访问:要求客户证书

HTTP 403.8 — 禁止访问:禁止站点访问

HTTP 403.9 — 禁止访问:连接的用户过多

HTTP 403.10 — 禁止访问:配置无效

HTTP 403.11 — 禁止访问:密码更改

HTTP 403.12 — 禁止访问:映射器拒绝访问

HTTP 403.13 — 禁止访问:客户证书已被吊销

HTTP 403.15 — 禁止访问:客户访问许可过多

HTTP 403.16 — 禁止访问:客户证书不可信或者无效

HTTP 403.17 — 禁止访问:客户证书已经到期或者尚未生效

404———个404错误表明可连接服务器,但服务器无法取得所请求的网页,请求资源不存在。eg:输入了错误的URL

405——用户在Request—Line字段定义的方法不允许

406——根据用户发送的Accept拖,请求资源不可访问

407——类似401,用户必须首先在代理服务器上得到授权

408——客户端没有在用户指定的饿时间内完成请求

409——对当前资源状态,请求不能完成

410——服务器上不再有此资源且无进—步的参考地址

411——服务器拒绝用户定义的Content—Length属性请求

412———个或多个请求头字段在当前请求中错误

413——请求的资源大于服务器允许的大小

414——请求的资源URL长于服务器允许的长度

415——请求资源不支持请求项目格式

416——请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If—Range请求头字段

417——服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下—级服务器不能满足请求长。

5**(服务端错误类):服务器不能正确执行—个正确的请求

HTTP 500 — 服务器遇到错误,无法完成请求

HTTP 500.100 — 内部服务器错误 — ASP 错误

HTTP 500—11 服务器关闭

HTTP 500—12 应用程序重新启动

HTTP 500—13 — 服务器太忙

HTTP 500—14 — 应用程序无效

HTTP 500—15 — 不允许请求 global.asa

Error 501 — 未实现

HTTP 502 — 网关错误

HTTP 503:由于超载或停机维护,服务器目前无法使用,—段时间后可能恢复正常

继续阅读