HTTP 笔记与总结(2 )HTTP 协议的(请求行的)请求方法 及 (响应行的)状态码

(请求行的)请求方法 包括:

GET,POST,HEAD,PUT,TRACE,DELETE,OPTIONS

注意:这些请求方法虽然是 HTTP 协议规定的,但是 Web Server 未必允许或支持这些方法。

HEAD 和 GET 基本一致,只是不返回内容,比如只是确认一个内容还正常存在,不需要返回具体内容。演示:

GET

HEAD

HEAD 方法只返回了响应的头信息。

PUT,往服务器上的资源传输内容:

服务器未必支持 HTTP 协议所规定的方法。

TRACE, 例如使用了代理上网(例如访问 news.163.com),可以使用 TRACE 查看代理有没有修改 HTTP 请求(163.com 的服务器就会把最后收到的请求返回):

同样 Not Allowed,对方的服务器不允许使用 TRACE 方法。

OPTIONS,返回服务器可用的请求方法:

OPTIONS 也不被允许。

用自己的本地服务器测试:

(响应行的)状态码、状态文字

状态码是用来反应服务器的响应情况;

状态文字是用来描述状态码的。

  状态码         定义     说明
  1XX   信息   接收到请求,继续处理
  2XX   成功   操作成功地收到,理解和接受
  3XX   重定向   为了完成请求,必须采取进一步措施
  4XX   客户端错误             请求的语法有错误,或者不能完全被满足              
  5XX   服务端错误    服务器无法完成明显有效地请求

常见的状态码

200 OK:服务器成功返回网页;

301 / 302:永久 / 临时 跳转,例:

301 重定向:

运行 redirect.php

<?php
//301永久重定向
header(‘Location:http://www.baidu.com‘, true, 301);

  

302 重定向:

运行 redirect.php

<?php
//302临时重定向
header(‘Location:http://www.baidu.com‘);

  

注意:当 post 数据发送到 a.php,a.php(header("Location:b.php");) 重定向到了 b.php(print_r($_POST);),导致的结果是 b.php 接受到的数据是 Array ()。

原因:从表单到 a.php 是 post 请求,从 a.php 到 b.php 变成了 get 请求(从 f12 开发人员工具中可以看出)

解决方案:

如果想保持 post 请求,可以使用 307重定向中保持原有数据。a.php:

<?php
header("Location:b.php", true, 307);

即可。此时 a.php 到 b.php 仍然是 post 请求。

304 Not Modified:未修改(浏览器缓存),例如

当第一次访问一个页面:

当刷新几次页面:

客户端(Chrome)告诉服务我有这张图片,并且告诉服务器该图片时间上的编号(If-Modified-Since 和 If-None-Match),询问服务器该图片是否过期,如果过期则传给我最新的图片;服务器告诉浏览器(ETag 和 Last-Modified),这张图片没有进行修改过,因此浏览器就从缓存中取出这张图片,减小了服务器传输的压力。

使用 telnet 进行缓存的测试,正常 GET 请求图片:

返回二进制的图片信息;

加上以下信息:

If-Modified-Since:Sun, 02 Nov 2014 13:46:57 GMT
If-None-Match:"1860000000012c5-9d39-506e076b8dbb5"

返回:

失败的状态码:

404:请求的网页不存在;

503:服务器暂时不可用;

500:服务器内部错误

时间: 2024-10-13 16:21:25

HTTP 笔记与总结(2 )HTTP 协议的(请求行的)请求方法 及 (响应行的)状态码的相关文章

php笔记06:http响应中的状态码

首先我们看一个360浏览器中使用开发截图如下: 上面的Status Code:200  OK (这个就是状态码) 1.状态码主要用于服务器对请求的处理结果,它是一个三位的十进制数.响应状态码分为5类,如下所示: 100~199:表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程. 200~299:表示成功接收请求,并且已经完成整个处理过程,常用的是200. 300~399:为完成请求,客户需进一步细化请求.例如,请求的资源已经移动一个新地址,常用为302/304. 400~499

HTTP协议(8)HTTP响应报文和状态码

对于HTTP响应报文,比较重要的信息主要有两部分,一部分是响应行中的状态码,另一部分是响应头.下面分别介绍.响应头信息中比较重要的部分: (1) Server,服务端所使用的Web服务名称,如:Server:Apache/1.3.6(Unix). (2) Set-Cookie:服务器向客户端设置的Cookie. (3) Last-Modified,服务器通过这个域告诉客户端浏览器,资源的最后修改时间. (4) Location:重定向用户到另一个页面,比如身份认证通过之后就会转向另一个页面.这个

《HTTP权威指南》笔记之 网络状态码

状态码分为五大类, (1)100 ~ 199 信息性状态码 状态码 含义 原因短语 100 说明服务器收到了请求的初始部分,请客户端继续发送 Continue 101 说明服务器正在根据客户端的指定,将协议转换成为 Update首部所列的协议 Switching Protocol (2)200 ~ 299 成功状态码 状态码 原因短语 含义 200 OK 请求没问题 201 Ctreated 用于创建服务器对象的请求(如PUT) 202 Accepted 请求已被接受,但服务器还未对其执行任何动

http协议的状态码 200、301、304、404、502 HTTP状态码解释

在网站建设的实际应用中,容易出现很多小小的失误,就像mysql当初优化不到位,影响整体网站的浏览效果一样,其实,网站的常规http状态码的表现也是一样,Google无法验证网站几种解决办法,提及到由于404状态页面设置不正常,导致了google管理员工具无法验证的情况,当然,影响的不仅仅是这一方面,影响的更是网站的整体浏览效果.因此,比较清楚详细的了解http状态码的具体含义,对于一个网站站长来说,这是很有必要俱备的网站制作基础条件. 如果某项请求发送到您的服务器要求显示您网站上的某个网页(例如

HTTP协议之http状态码详解

什么是HTTP状态码 HTTP状态码的作用是:Web服务器用来告诉客户端,发生了什么事. 状态码位于HTTP Response 的第一行中,会返回一个"三位数字的状态码"和一个"状态消息". "三位数字的状态码"便于程序进行处理, "状态消息"更便于人理解. 已定义范围 分类 1XX 100-101 信息提示 2XX 200-206 成功 3XX 300-305 重定向 4XX 400-415 客户端错误 5XX 500-50

HTTP协议 (六) 状态码详解

HTTP状态码,我都是现查现用. 我以前记得几个常用的状态码,比如200,302,304,404, 503. 一般来说我也只需要了解这些常用的状态码就可以了.  如果是做AJAX,REST,网络爬虫,机器人等程序.还是需要了解其他状态码.  本文我花了一个多月的时间把所有的状态码都总结了下,内容太多,看的时候麻烦耐心点了. HTTP状态码的学习资料到处都有,但是都是理论上讲解.  本文介绍HTTP协议中的HTTP状态码(HTTP Status Code), 会对大部分的状态码都进行了详细的实例讲

HTTP协议的状态码

对于Web编程人员来说,熟悉了解HTTP协议的状态码是很有必要的,很多时侯可能根据HTTP协议的状态码很快就能定位到错误信息!今天整理了一下所有HTTP状态码. HTTP状态码(HTTP Status Code)是用来表示网页服务器HTTP 响应状态的3位数字代码.它由RFC 2616规范定义的,并得到RFC 2518.RFC 2817.RFC 2295.RFC 2774.RFC 4918等规范扩展.所有状态码的第一个数字代表了响应的五种状态之一. HTTP/1.1定义的状态码值和对应的原因短语

HTTP/1.1协议支持的8种请求方法

方法 说明 GET 获取资源 POST 传输实体主体 PUT 传输文件 DELETE 删除文件 HEAD 获得报文首部 OPTIONS 询问支持的方法 TRACE 追踪路径 CONNECT 要求用隧道协议连接代理 HTTP请求的方法: HTTP/1.1协议中共定义了八种方法(有时也叫"动作"),来表明Request-URL指定的资源不同的操作方式 1.OPTIONS 用来查询针对请求URI指定的资源支持的方法. 2.HEAD 与GET方法一样,只是不返回报文主体部分.用于确认URI的有

http协议状态码及其意义

什么是状态码? 状态码的作用是:服务器告诉客户端,发生了什么事. 在http协议中状态码出现在http response 的第一行.它会返回一个三位数的状态码和状态信息.状态码为了便于程序进行处理,而状态信息是为了让用户能清楚的明白意思. 状态码分类 HTTP状态码被分为五大类, 目前我们使用的HTTP协议版本是1.1, 支持以下的状态码.随着协议的发展,HTTP规范中会定义更多的状态码. 小技巧:  假如你看到一个状态码503, 你并不知道具体503是什么意思. 这时候你只要知道503是属于(

HTTP协议状态码与相关含义

本数据来自网络   状态码 含义 100 客户端应当继续发送请求.这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝.客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应.服务器必须在请求完成后向客户端发送一个最终响应. 101 服务器已经理解了客户端的请求,并将通过Upgrade 消息头通知客户端采用不同的协议来完成这个请求.在发送完这个响应最后的空行后,服务器将会切换到在Upgrade 消息头中定义的那些协议. 只有在切换新的协议更有好处的时候才应该采取类