首先我们看一个360浏览器中使用开发截图如下:

上面的Status Code:  OK (这个就是状态码)

1.状态码主要用于服务器对请求的处理结果,它是一个三位的十进制数。响应状态码分为5类,如下所示:

100~199:表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程.

200~299:表示成功接收请求,并且已经完成整个处理过程,常用的是200.

300~399:为完成请求,客户需进一步细化请求。例如,请求的资源已经移动一个新地址,常用为302/304.

400~499:客户端的请求有错误,常用的404.

500~599:服务器端出现错误,常用的500.

2.举例说明http响应的实际应用

(1)状态码302使用

我们现在希望访问a.php页面,让其自动重定向到b.php

我们在php安装文件的htdos/http(在htdos新建一个http文件夹),里面分别写上a.php和b.php,两者的代码如下:

a.php:

<?php
//这句代码会向客户端发送一个302状态码,告诉浏览器跳转访问b.php
header("Location: b.php");
?>

b.php:

<?php

   echo "b.php页面";

?>

我们在浏览器中输入网址:http://localhost/http/a.php,打开浏览器开发人员工具

抓包得到如下:get a.php (Status Code:302),我们查看到下面的Location:b.php

服务器回复给浏览器状态码302,也就是说告诉浏览器要跳转访问b.php文件(302就好像是一个跳转条件)

get b.php  (Status Code: 200 ),这时候就没有Location

扩展一下,这里也可以跳转到外网处,也就是将a.php可以改成如下代码:

<?php
//这句代码会向客户端发送一个302状态码,告诉浏览器跳转访问b.php
//header("Location: b.php");
header("Location: http://www.sohu.com");
?>

(2)状态码404使用

我们浏览器输入访问一个不存在的文件地址,http://localhost/http/c.php(这里c.php是在访问目录不存在的),抓包出现如下结果:

下面是数据包的具体信息:Status Code:404 Not Found(没有找到相应的文件,该页面不存在)

(3)状态码304使用

我们在php安装文件的htdos/http处,再写一个d.php文件,如下:

<?php
echo "hello";
echo "<img src='bad_mans.jpg' width ='100px'>";
?>

第一次再浏览器中访问这个文件,输入地址http://localhost/http/d.php,出现如下结果:

上面的回复砖状态码为200,我就不说明了,前面说过了,当我们刷新这个访问页面,会出现以下结果:

点击进入第二个数据包的解析:

(1)首先我们看看这个Request:

If—Modified—Since: If-Modified-Since 则是由客户端往服务器发送的头,可 以看到,再次请求本地存在的 cache 页面时,客户端会通过 If-Modified-Since 头将先前服务器端发过来的 Last-Modified 最后修改时间戳发送回去,这是为了让服务器端进行验证,通过这个时间戳判断客户端的页面是否是最新的,如果不是最新的,则返回新的内容,如果是最新的,则 返回 304 告诉客户端其本地 cache 的页面是最新的,于是客户端就可以直接从本地加载页面了,这样在网络上传输的数据就会大大减少,同时也减轻了服务器的负担。

If—None—Match:"3000000012e37-22006-51c86b9113ba4"这个是发给服务器,工作原理是在HTTP Response中添加ETags信息。当客户端再次请求该资源时,将在HTTP Request中加入If-None-Match信息(ETags的值)。如果服务器验证资源的ETags没有改变(该资源没有改变),将返回一个304状态;否则,服务器将返回200状态,并返回该资源和新的ETags。

案例扩展:

<?php

     //header("Refresh:3; url=http://www.sohu.com");

     header("Refresh:3; url=http://localhost/http/d.php");//告诉浏览器,间隔3s,重定向到http://localhost/http/d.php

?>

php笔记06:http响应中的状态码的更多相关文章

  1. Javaweb学习笔记——(十)——————response对象,response字符流缓冲器,响应头,状态码,重定向,requset对象,路径和乱码

    请求响应对象: request和response *当服务器接收都请求后,服务器会创建request和response对象,把请求数据封装到request对象中: *然后调用Servlet的sevic ...

  2. 网站建设中HTTP状态码的奥秘

    在网络营销中,站长经常会遇到一些HTTP状态码的问题,不懂HTTP状态码那么做SEO优化就无从谈起,下面是脉凌网络对HTTP状态码总结的一览表. 1xx:请求收到,继续处理 2xx:操作成功收到,分析 ...

  3. 19. HTTP协议二:HTTP请求与响应、常见状态码

    HTTP请求与响应 HTTP请求 HTTP请求是指从客户端到服务器端的请求消息.HTTP请求主要由三部分构成,请求行.请求头(headers).body(请求数据). 上图是笔者用Charles抓包工 ...

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

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

  5. 19.在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(?)写出http常见的状态码和含义,至少5个.[完善题目]

    状态401代表未被授权,header("Location:www.xxx.php"); 100-199 用于指定客户端应相应的某些动作. 200-299 用于表示请求成功. 300 ...

  6. 客户端请求、服务器响应及其HTTP状态码

    一JSP客户端请求 当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信 息头的一部分来传送的.我们可以查阅HTTP协议来获得更多的信息. 下表列出了浏 ...

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

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

  8. Java Web学习(1): 客户端请求、服务器响应及其HTTP状态码

    一JSP客户端请求 当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信 息头的一部分来传送的.我们可以查阅HTTP协议来获得更多的信息. 下表列出了浏 ...

  9. http协议中的状态码(status code),超文本传输协议状态码

    HTTP协议,又叫超文本传输协议. 在项目的开发过程中,前后端交互,这个用的是最多的,在后端给我的的接口调用时,我们往往先查看这个协议的状态码,状态码正常了,才进一步去看我们从后太拿的数据,是否为我们 ...

随机推荐

  1. openwrt开发

    之前写过一篇日志,是关于如何搭建自己的OpenWRT开发环境.经过最近一段时间的开发学习和实践,对OpenWRT环境的开发有了一定的了解.在这里将我的开发心得做个整理. 1.搭建开发环境 首先,我们需 ...

  2. [Tommas] SQL 中 WITH AS 的用法

    WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到: 下面的例子定义了一个 Temp 片段,Te ...

  3. 关于 Lua 内存泄漏的检测

    前一阵开始和同事一起优化内存,首先是优化 Lua 内存,因为发现每次战斗完后 Lua 内存非常大,从 3M 左右在经过了10次左右的战斗后,会暴增到近 100M,很明显是有内存泄漏.      然后我 ...

  4. Linux入门1

    在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器).它类似于DOS下的command和后来的cmd.exe.它接收用户命令,然后调用相应的应用程序. Li ...

  5. zabbix 获取不到自定义脚本的值解决

    agent端: zabbix 自定义脚本 [root@localhost script]# cat check_ping.sh #!/bin/bash result=$(/usr/local/nagi ...

  6. 判断是否已安装.net framework

    1.检测 %SystemRoot%\System 目录下的MSCorEE.dll文件,如果存在,则表明.net framework 已安装. 2.检测一下注册表项的子项: KEY_LOCAL_MACH ...

  7. HDOJ-ACM1019(JAVA) 多个数的最小公倍数

    题意:求多个数的最小公倍数 很简单,但是我一开始的做法,估计会让结果越界(超过int的最大值) import java.util.*; import java.io.*; public class M ...

  8. Codeforces295A - Greg and Array(线段树的成段更新)

    题目大意 给定一个序列a[1],a[2]--a[n] 接下来给出m种操作,每种操作是以下形式的: l r d 表示把区间[l,r]内的每一个数都加上一个值d 之后有k个操作,每个操作是以下形式的: x ...

  9. Codeforces2B - The least round way(DP)

    题目大意 给定一个N*N的格子,每个格子里有一个非负数,要求你找出从左上角到右下角的一条路径,使得它满足路径上的格子里的数全部乘起来的积尾部0最少 题解 如果要产生0肯定是2*5得出来的,最终的乘积可 ...

  10. Dynamices CRM Permission Issue (Security role UI to privilege mapping)'s solution

    select * from privilege where  privilegeid = 'a4736385-9763-4a64-a44b-cd5933edc631' Security role UI ...