状态码

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

一般可分为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. JNI Hello World

    1.什么是JNI:               JNI(Java Native Interface):java本地开发接口               JNI是一个协议,这个协议用来沟通java代码和 ...

  2. hbuilder 配置app为沉浸式状态栏

  3. React Native 安卓模拟器调出Dev Setting

    Android Studio 模拟器调出Dev Setting 实现热更新 cmd进入项目目录 F:\study\AwesomeProject> 执行 adb shell input keyev ...

  4. rabbitmq使用延迟时报异常

    声明交换机为延迟时报异常( unknown exchange type 'x-delayed-message')的解决方法 服务端需下载安装插件: 1.下载插件包 2.将下载后的插件包移至服务安装目录 ...

  5. idea关联git后 Git上传项目提示Push rejected: Push to origin/master was rejected解决办法

    当所有的东西都配好以后  就是不上数据  解决方案是在所属右键 点击Git BashHere后  输入:git pull origin master –allow-unrelated-historie ...

  6. PHP FILTER_VALIDATE_EMAIL 过滤器

    定义和用法 FILTER_VALIDATE_EMAIL 过滤器把值作为 e-mail 地址来验证. Name: "validate_email" ID-number: 274 实例 ...

  7. Android中的RelativeLayout中组件的排放问题

    今天想仿照新浪微博的用户中心 主要就是那个头像的问题,这个看到就想到用相对布局,现在是我想把那个名称放到头像的上面去xml中定义如下: <RelativeLayout android:layou ...

  8. 思维+multiset优化——cf1249E

    正着想很难,但是反着想就容易有思路 /* 将问题转化为 挑选最多的线段,每个点的覆盖次数不超过k次 multiset里存k个右端点,表示第i层当前的最远右端点,每次来一根新线段,能填就填进并更新,不能 ...

  9. 单调栈+线段树——cf1220F

     首先考虑初始排列,pi会让周围所有比其大的元素深度+1,所以要求每个点的深度,只要其被覆盖了几次即可 这个覆盖可以通过处理每个元素的左右边界(单调栈O(n))+线段树区间更新(Ologn(n))来做 ...

  10. PHP中关于Phar的学习

    什么是phar 一个PHP程序往往是由多个文件组成的,如果能够集中为一个文件来分发和运行是很方便的.phar便应运而生.大概跟java的jar文件是差不多类似的.但是php的phar文件是可以由php ...