HTTP状态码及请求头
状态码
状态码告知从服务器端返回的请求结果
一般可分为5个大类
| 1XX | Informational(信息性状态码) |
| 2XX | Success(成功状态码) |
| 3XX | Redirection(重定向状态码) |
| 4XX | Client Error(客户端错误状态码) |
| 5XX | Server Error(服务器错误状态码) |
只要遵守状态码类别的定义,即使改变RFC2616中定义的状态码,或者服务端自行创建状态码都没问题
2XX
2xx的响应结果表明请求被正常处理了
204
200这个就不说了, 说一下204这个响应, 该状态码表示已成功处理请求, 但是返回的响应报文中不含实体的主体部分. 也不允许返回任何实体的主体. 返回204响应,浏览器的页面不会发生更新.
如果只需要客户端往服务端发消息, 而服务端不需要响应内容的时候就可以使用这个状态码
206
该状态码表示客户端进行了范围请求, 而服务端成功执行了这部分的GET请求. 响应报文中含由Content-Range指定范围的实体内容.
.这种情况经常发生在客户端继续请求一个未完成的下载的时候(通常是当客户端加载一个体积较大的嵌入文件,比如视屏或PDF文件),或者是客户端尝试实现带宽遏流的时候.
3XX
官话来说就是在正确处理请求之前要执行某些操作
301
永久性重定向, 该状态码表示请求的资源已经被分配了新的url.
302
临时重定向, 同是表示请求的资源新分配了地址, 希望用户本次能使用新的url访问
301和302类似, 但是如果页面保存了书签的话, 301会将书签地址修改(浏览器做的)
303
该状态码表示由于请求对应的资源存在着另一个url. 应使用GET方法定向获取请求的资源.
302和303有着相同的功能,但是303明确表示客户端应采用GET方法获取新资源
比如说一个POST请求得到的返回结果是要用GET重定向到另一个url上去,这里使用303是最理想的
301,302的标准是禁止将POST改成GET的, 但是实际上...
304 Not Modified
服务器资源未改变, 可以直接使用客户端未过期的缓存, 304响应不包含响应体
307
同是临时重定向, 但是他不会改变请求的方式.
4XX
4XX的响应结果表明客户端是发生错误原因的所在
400 Bad Request
该状态码表示请求报文中存在语法错误,
401 Unauthorized
该状态码表示发送的请求需要通过HTTP认证的认证信息,如果之前进行过1次请求, 则表示用户认证失败, 浏览器初次接到401响应会弹出一个认证的对话窗口

403 Forbidden
这个大家肯定不陌生了, 就是拒绝你访问
404 Not Found
这个也是很熟悉的, 表示服务器上找不到资源, 也可以在服务器拒绝请求且不想说明理由时使用
405 Method Not Allowed
不支持该请求方法
5XX
5XX表示服务器本身发生错误
500 Internal Server Error
该状态码表示服务端在执行请求时发生了错误. 也有可能是web应用存在的bug或某些临时的故障
503 Service Unavailable
该状态码表示服务器暂时处于超负载或正在进行停机维护, 现在无法处理请求, 如果事先得知解除以上状态的时间, 最好写入RetryAfter首部字段再返回给客户端
最后要说的是, 状态码只算是一个规范, 状态码和状态不一致的情况也是经常发生的
头部字段
先写几个常用的吧
请求首部字段
Accept: 此字段通知服务器, 用户代理用户代理能够处理的媒体类型及媒体类型的相对优先级
Authorizstion: 用户的认证信息, 这个和HTTP的认证是有关的
Host: 告知服务器,请求资源所处的主机名和端口号
Referer: 告知服务器请求的原始资源的url,就是说从哪个地址过去的, 比如有些图片资源, 复制到别的网站就不能看了, 实际上复制的是a标签, 再去访问图片时该请求头就变了
User-Agent: 用于传达浏览器的种类
响应首部字段
Location: 该字段配合30X, 告知跳转的地址
实体首部
实体首部字段是包含在请求报文和响应报文中的实体部分所使用的首部,
Allow: 通知客户端能够支持 Request-URI 指定资源的所有 HTTP 方法。当服务器接收到不支持的 HTTP 方法时,会以状态码405 Method Not Allowed 作为响应返回。
Content-Type:说明了实体主体内对象的媒体类型。和首部字段 Accept 一样,字段值用 type/subtype 形式赋值。
除此之外还有cookie相关的和core跨域相关的, 后面在补充
HTTPS
HTTP 协议中没有加密机制,但可以通过和 SSL(Secure Socket Layer,安全套接层)或TLS(Transport Layer Security,安全层传输协议)的组合使用,加密 HTTP 的通信内容。用 SSL 建立安全通信线路之后,就可以在这条线路上进行 HTTP通信了。与 SSL 组合使用的 HTTP 被称为 HTTPS(HTTPSecure,超文本传输安全协议)或 HTTP over SSL。
HTTPS 采用共享密钥加密和公开密钥加密两者并用的混合加密机制。
在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式。

公开密钥加密方式还是存在一些问题的。那就是无法证明公开密钥本身就是货真价实的公开密钥。公开密钥可能在传输过程中就被替换掉了, 为了证明公钥是服务端签发的, 可以使用由数字证书认证机构(CA)和其相关机关颁发的公开密钥证书.
步骤大概是:
- 服务器运营人员向数字证书认证机构提出公开密钥的申请.
- 认证机构用自己的私有秘钥向服务器的公钥做数字签名, 然后将公开密钥和数字签名放入公钥证书
- 客户端(认证机构的公钥都会事先植入到浏览器里)拿到服务器的证书之后, 检验证书上的数字签名, 确认服务器公开密钥的真实性
HTTP状态码及请求头的更多相关文章
- 接口测试——HttpClient工具的https请求、代理设置、请求头设置、获取状态码和响应头
目录 https请求 代理设置 请求头设置 获取状态码 接收响应头 https请求 https协议(Secure Hypertext Transfer Protocol) : 安全超文本传输协议, H ...
- HTTP状态码、请求方法、响应头信息
HTTP状态码 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求.当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应 ...
- HTTP协议---HTTP请求中的常用请求字段和HTTP的响应状态码及响应头
http://blog.csdn.net/qxs965266509/article/details/8082810 用于HTTP请求中的常用请求头字段 Accept:用于高速服务器,客户机支持的数据类 ...
- http状态码 以及请求响应头相关
1xx消息[编辑] 这一类型的状态码,代表请求已被接受,需要继续处理.这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束.由于HTTP/1.0协议中没有定义任何1xx状态码,所以除非 ...
- HTTP请求响应报文&&相关状态码&&GET_POST请求方法 总结
HTTP请求报文: 一个HTTP请求报文由四个部分组成:请求行.请求头部.空行.请求数据 1.请求行 请求行由请求方法字段.URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔.比如 GE ...
- HTTP请求响应报文 - 相关状态码 - GET_POST请求方法
HTTP请求报文: 一个HTTP请求报文由四个部分组成:请求行.请求头部.空行.请求数据 1.请求行 请求行由请求方法字段.URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔.比如 GET ...
- http状态码+http请求方式
一.http状态码 2开头 (请求成功)表示成功处理了请求的状态代码. 200 (成功) 服务器已成功处理了请求. 通常,这表示服务器提供了请求的网页. 201 (已创建) 请求成功并且服 ...
- http协议中常见的状态码以及请求方式,http协议的组成
请求状态码: 2xxx:表示请求成功,例如200. 3xxx:表示请求被重定向,表示完成请求,需要进一步操作,例如 302. 4xxx:表示请求错误,例如:404,资源没有找到. 5xxx:表示服务器 ...
- HTTP协议简介详解 HTTP协议发展 原理 请求方法 响应状态码 请求头 请求首部 java模拟浏览器客户端服务端
协议简介 协议,自然语言里面就是契约,也是双方或者多方经过协商达成的一致意见; 契约也即类似于合同,自然有甲方123...,乙方123...,哪些能做,哪些不能做; 通信协议,也即是双方通过网络通信必 ...
随机推荐
- android studio安装中出现Failed to install Intel HAXM错误的解决方法
1.问题分析 从下面可以知道安装Intel HAXM失败,请检查haxm_silent_run.log这篇日志. (1)先了解一下什么是Intel HAXM Intel代表的是英特尔,HAXM的全程是 ...
- termcap - 终端功能数据库
描述 DESCRIPTION termcap 数据库是一个过时 (obsolete) 工具,用来描述以字符为单位的终端和打印机的功能.它之所以被保留,是为了兼容古老的程序:新程序应当使用 termin ...
- 配置基于python的VIM环境
配置基于python的VIM环境 安装插件管理工具 为防止过多插件管理的麻烦,首先安装vim的插件管理工具Vundle.vundle本身的github软件已经有相关的中文文档,地址如下: vundle ...
- 在CMake中启用VS2017的C++17特性
VS2017的C++17特性默认并未开启,需要在编译参数中手动开启.找到项目的CMakeLists.txt,在查找编译器的代码后面加入如下内容即可. ") include(CheckCXXC ...
- Windows添加右键新增.md文件
因为习惯用Markdown来写文档, 所以常常需要新建.md文档,但由于Windows并不会自带把.md文档放入右键新建项中(像Word那样),所以方便起见,自己手动设置,其实就是把它写进Window ...
- vs code 自定义代码片段
1.快捷键Ctrl+Shift+P打开命令输入 snippet : (也可以点击文件=>首选项=>用户代码片段) 2.选择代码语言类型(这里以JavaScrpt为例) 3.在javascr ...
- js基本算法
一.阶乘(递归思想) // 计算阶乘 function factorial(n) { if (n === 1) { return 1 } return n * factorial(n - 1) } 二 ...
- 计算机网络之IP地址与MAC地址
IP地址 IP地址(Internet Protocol Address): 缩写为IP Adress,是一种在Internet上的给主机统一编址的地址格式,也称为网络协议(IP协议)地址. 它为互联网 ...
- MySQL常用操作2
MySQL常用操作2 判断函数 IF(expr, value1, value2) -- 如果表达式expr为true,则返回value1,否则返回value2 IFNULL(value1, val ...
- Hello cnblog!
博主是从csdn搬过来的,原博客地址: https://blog.csdn.net/Cold_Chair 里面有一些不错的游记和知识点讲解,由于不方便搬过来,所以有兴趣的同学可以去看看(* ̄︶ ̄)