面试之HTTP协议相关的问题

筅森魡賤 提交于 2020-04-05 15:34:53

HTTP的请求报文结构和响应报文结构

HTTP请求报文主要由请求行、请求头、空行、请求正文(Get请求没有请求正文)4部分组成。

1、请求行

  由三部分组成,分别为:请求方法、URL以及协议版本,之间由空格分隔;

  请求方法包括GET、HEAD、PUT、POET、TRACE、OPTIONS、DELETE以及扩展方法,当然并不是所有的服务器都实现了所有的方法,部分方法即便支持,出于安全性的考虑也是不同的;

  协议版本的格式为:HTTP/主版本号.次版本号,常用的有HTTP/1.0和HTTP/1.1;

2、请求头

  请求头部为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔。

  常见请求头如下:

                         

3、空行

  请求头的最后会有一个空行,表示请求头部结束,接下来为请求正文,这一行非常重要,必不可少。

4、请求正文

  可选部分,比如GET请求就没有请求正文。

HTTP响应报文主要由状态行、响应头、空行、响应正文4部分组成。

1、状态行

  由3部分组成,分别为:协议版本、状态码、状态码描述,之间由空格分隔;

2、响应头

  与请求头类似,为响应报文添加一些附加信息。

  常见响应头如下:

                          

3、空行

4、响应正文

常见HTTP首部字段

A、通用首部字段(请求报文与响应报文都会使用的首部字段

  Date:创建报文时间

  Connection:连接的管理

  Cache-Control:缓存的控制

  Transfer-Encoding:报文主体的传输编码方式,如Transfer-Encoding: chunked。

B、请求首部字段(请求报文会使用的首部字段)

  Host:请求资源所在服务器

  Accept:可处理的媒体类型

  Accept-Charset:可接收的字符集

  Accept-Encoding:可接受的内容编码

  Accept-Language:可接受的自然语言

  Referer:HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。如果是CSRF攻击传来的请求,Referer字段会是包含恶意网址的地址,这时候服务器就能识别出恶意的访问。

C、响应首部字段(响应报文会使用的首部字段)

  Accept-Ranges:可接受的字节范围

  Location:另客户端重新定向到的URI

  Server:HTTP服务器的安装信息

D、实体首部字段(请求报文与响应报文的实体部分使用的首部字段)

  Allow:资源可支持的HTTP方法

  Content-Type:实体主类的类型

  Content-Encoding:实体主体适用的编码方式

  Content-Language:实体主体的自然语言

  Content-Length:实体主体的字节数

  Content-Range:实体主体的位置范围

HTTP状态码含义

200 OK  服务器已成功处理了请求并提供了请求的网页。

202 Accepted  已经接受请求,但处理尚未完成。

204 No Content  没有新文档,浏览器应该继续显示原来的文档。

206 Partial Content  客户但进行了范围请求。响应报文中由Content-Range指定实体内容的范围。实现断点续传。

-----------------------------------------------------------------------------------------------------

301 Moved Permanently  永久性重定向。请求的网页已永久移动到新位置。

302(或307) Moved Temporatily  临时性重定向。请求的网页临时移动到新位置。

304 Not Modified  未修改。自从上次请求后,请求的内容未修改过。

-----------------------------------------------------------------------------------------------------

401 Unauthorized  客户试图未经授权访问受密码保护的页面。应答终会包含一个WWW-Authenticate头,浏览器据此显示用户名字/密码对话框,然后再填写合适的Authorization头后再次发出请求。

403 Forbidden  服务器拒绝请求。----------403.6-IP address rejected

404 Not Found  服务器上不存在客户机所请求的资源。

-----------------------------------------------------------------------------------------------------

500 Internal Server Error  服务器遇到一个错误,使其无法为请求提供服务。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!