状态码

状态码告知从服务器端返回的请求结果

一般可分为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状态码及请求头的更多相关文章

  1. 接口测试——HttpClient工具的https请求、代理设置、请求头设置、获取状态码和响应头

    目录 https请求 代理设置 请求头设置 获取状态码 接收响应头 https请求 https协议(Secure Hypertext Transfer Protocol) : 安全超文本传输协议, H ...

  2. HTTP状态码、请求方法、响应头信息

    HTTP状态码 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求.当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应 ...

  3. HTTP协议---HTTP请求中的常用请求字段和HTTP的响应状态码及响应头

    http://blog.csdn.net/qxs965266509/article/details/8082810 用于HTTP请求中的常用请求头字段 Accept:用于高速服务器,客户机支持的数据类 ...

  4. http状态码 以及请求响应头相关

    1xx消息[编辑] 这一类型的状态码,代表请求已被接受,需要继续处理.这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束.由于HTTP/1.0协议中没有定义任何1xx状态码,所以除非 ...

  5. HTTP请求响应报文&&相关状态码&&GET_POST请求方法 总结

    HTTP请求报文: 一个HTTP请求报文由四个部分组成:请求行.请求头部.空行.请求数据 1.请求行   请求行由请求方法字段.URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔.比如 GE ...

  6. HTTP请求响应报文 - 相关状态码 - GET_POST请求方法

    HTTP请求报文: 一个HTTP请求报文由四个部分组成:请求行.请求头部.空行.请求数据 1.请求行 请求行由请求方法字段.URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔.比如 GET ...

  7. http状态码+http请求方式

    一.http状态码 2开头 (请求成功)表示成功处理了请求的状态代码. 200   (成功)  服务器已成功处理了请求. 通常,这表示服务器提供了请求的网页. 201   (已创建)  请求成功并且服 ...

  8. http协议中常见的状态码以及请求方式,http协议的组成

    请求状态码: 2xxx:表示请求成功,例如200. 3xxx:表示请求被重定向,表示完成请求,需要进一步操作,例如 302. 4xxx:表示请求错误,例如:404,资源没有找到. 5xxx:表示服务器 ...

  9. HTTP协议简介详解 HTTP协议发展 原理 请求方法 响应状态码 请求头 请求首部 java模拟浏览器客户端服务端

    协议简介 协议,自然语言里面就是契约,也是双方或者多方经过协商达成的一致意见; 契约也即类似于合同,自然有甲方123...,乙方123...,哪些能做,哪些不能做; 通信协议,也即是双方通过网络通信必 ...

随机推荐

  1. Msf+Donut执行任意可执行文件

    地址:donut:https://github.com/TheWover/donut 介绍:是一个shellcode生成工具,可以将.NET程序集等转换为shellcode. 使用:donut.exe ...

  2. zookeeper常用配置详解

    #ZK中的一个时间单元.ZK中所有时间都是以这个时间单元为基础,进行整数倍配置的.例如,session的最小超时时间是2*tickTime tickTime=2000 #Follower在启动过程中, ...

  3. Stm32CubeMX5 配置 外部中断

    实验使用连接PA8引脚的按键触发中断,外部中断使用双边沿触发,这样就可以检测按键按下与松开,当按键按下时点亮LED, 当按键松开是关闭LED,在中断服务函数中只置位相应的标志,在main函数中具体处理 ...

  4. xfce4之whisker不显示自定义启动器的解决

    对某些启动比较麻烦的程序,想创建个启动器显示在whisker里,这样就能快速启动了. 通常自己创建的desktop文件可以放~/.local/share/applications里,但是按下面这个创建 ...

  5. 基于Docker构建Jenkins CI平台

    1.部署gitlab 1.1 部署gitlab docker run -d \ --name gitlab \ -p 8443:443 \ -p 9999:80 \ -p 9998:22 \ -v $ ...

  6. Centos 更改语言设置为中文

    说明 自己装系统时一般都可以自定义选择系统语言.可是云端服务器一般都是安装好的镜像,默认系统语言为英文,对于初学者可能还会有搞不懂的计算机词汇.这里简单说一下centos7怎么修改系统语言为中文. 修 ...

  7. Python Class (一)

    继承 class Character(object): def __init__(self, name): self.health = 100 self.name = name def printNa ...

  8. 12.RabbitMQ多机集群

    配置两台Linux CentOS 6.7虚拟主机 CentOS6.7下载地址 https://pan.baidu.com/s/1i5GPg9n   安装视频下载 https://pan.baidu.c ...

  9. 一个小BUG引发的思考。(论开发与测试之间的那点事)

    标题不是“一个馒头引发的血案”. 言归正传:今天上午测试的时候,发现了一个BUG,如图: 一个用肉眼就能发现的BUG.原因当然是因为开发同事没有自测试,流入到了测试人员这里了. 无非是开发同事不严谨造 ...

  10. 使用poi实现生成excel文件

    import java.util.ArrayList; import javax.servlet.ServletOutputStream; import org.apache.poi.hssf.use ...