赞
踩
之前我们一起学习了HTTP1.0、HTTP1.1、HTTP2.0协议之前的区别、以及URL地址栏中输入网址到页面展示的全过程&&DNS域名解析的过程、HTTP协议基本概念以及通信过程、HTTPS基本概念、SSL加密原理、通信过程、中间人攻击问题、HTTP协议和HTTPS协议区别。接下来我们就来学习一下【强烈建议收藏:计算机网络面试专题:HTTP协议、HTTP请求报文和响应报文、HTTP请求报文常用字段、HTTP请求方法、HTTP响应码】,发车啦,嘟嘟嘟!
HTTP是面向文本的,其报文中的每一个字段都是一些ASCII码串,并且每个字段的长度都是不确定的。
HTTP请求报文主要由请求行、请求头部、请求正文三部分组成,如下图所示
请求行由三部分组成,分别为:请求方法、URL、协议版本。三者之间由空格分隔。
补充:什么是URI呢?
URI(Uniform Resource Identifier) 是统一资源标志符,可以唯一标识一个资源。
HTTP请求报文中请求行中的请求方法相关补充:HTTP协议的方法都有哪些呢?
根据 HTTP 标准,HTTP 请求可以使用多种请求方法。
方法 | 描述 |
---|---|
GET | 请求指定的页面信息,并返回实体主体。 |
HEAD | 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头 |
POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。 |
PUT | 从客户端向服务器传送的数据取代指定的文档的内容。 |
DELETE | 请求服务器删除指定的页面。 |
CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。 |
OPTIONS | 允许客户端查看服务器的性能。 |
TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
PATCH | 是对 PUT 方法的补充,用来对已知资源进行局部更新 。 |
常见请求头如下:
请求头 | 说明 |
---|---|
Host | 接受请求的服务器地址,可以是IP:端口号,也可以是域名。请求报文头部主要用于指定被请求资源的Internet主机和端口号,发送请求时,这个字段是必需的 |
User-Agent | 告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本。发送请求的应用程序名称,也就是浏览器名称 |
Connection | 指定与连接相关的属性,如Connection:Keep-Alive |
Accept-Charset | 通知服务端可以发送的编码格式 |
Accept-Encoding | 通知服务端可以发送的数据压缩格式,gzip、deflate。浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate) |
Accept-Language | 通知服务端可以发送的语言,浏览器申明自己接收的语言 |
Accept | 传输文件类型,text/html浏览器可以接受服务器回发的类型为 text/html,*/*代表浏览器可以处理所有类型(一般浏览器发给服务器都是发这个) |
Cookie | 可以表示用户状态的信息 |
Upgrade-Insecure-Requests | 升级为HTTPS请求 |
Referer | 当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理 |
x-requested-with:XMLHttpRequest | Ajax异步请求 |
Range | bytes=0-5。指定第一个字节的位置和最后一个字节的位置。用于告诉服务器自己想取对象的哪部分。 |
Cache-Control | 浏览器缓存策略 |
对于请求头中几个重要的信息进行补充说明
Connection:keep-alive。当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。
Connection:close。代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭, 当客户端再次发送Request,需要重新建立TCP连接。
Keep-Alive:多次请求复用一个TCP连接。
Keep-Alive: timeout=5, max=1000
HTTP是无状态的:协议对于事务处理没有记忆能力,对同一个url请求没有上下文关系,每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接影响后面的请求应答情况
使用Cookie在服务器上记录用户信息:
Cookie:用来存储一些用户信息以便让服务器辨别用户身份的(大多数需要登录的网站上面会比较常见),比如cookie会存储一些用户的用户名和密码,当用户登录后就会在客户端产生一个cookie来存储相关信息,这样浏览器通过读取cookie的信息去服务器上验证并通过后会判定你是合法用户,从而允许查看相应网页。当然cookie里面的数据不仅仅是上述范围,还有很多信息可以存储是cookie里面,比如sessionid等。
HTTP响应报文主要由状态行、响应头部、响应正文三部分组成,如下图所示
状态行由3部分组成,分别为:协议版本、状态码、状态码描述。三者之前由空格分隔。
常用状态码如下:
状态码 | 说明 |
---|---|
200 | 响应成功 |
301 | 永久重定向,搜索引擎将删除源地址,保留重定向地址 |
302 | 暂时重定向,重定向地址由响应头中的Location属性指定 |
304 | 缓存文件并未过期,还可继续使用,无需再次从服务端获取 |
400 | 客户端请求有语法错误,不能被服务器识别 |
403 | 服务器接收到请求,但是拒绝提供服务(认证失败) |
404 | 请求资源不存在 |
500 | 服务器内部错误 |
对于响应状态码的信息进行补充说明
响应头 | 说明 |
---|---|
Server | 服务器应用程序软件的名称和版本 |
Content-Type | 响应正文的类型(是图片还是二进制字符串) |
Content-Length | 响应正文长度 |
Content-Charset | 响应正文使用的编码 |
Content-Encoding | 响应正文使用的数据压缩格式 |
Content-Language | 响应正文使用的语言 |
对于响应头部中几个重要的信息进行补充说明
如果你看到这里啦,那必须要为你点赞了。
其实学习就是这样,鼓噪乏味,但知道了为什么学习,为什么努力后,好像一切就没有想象总那么糟了。
我是硕风和炜,我们下篇文章见哦。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。