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

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, );

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

例:

test.html

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form action="a.php" method="post">
username: <input type="text" name="usernam">
<input type="submit" value="提交">
</form>
</body>
</html>

a.php

<?php
header('Location:b.php');

b.php

<?php
error_reporting(0);
print_r($_POST);

修改 b.php

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

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:服务器内部错误

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

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

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

  2. http协议详解及htt面试题目,常见的http状态码

    http协议详解及htt面试题目,常见的http状态码 HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的.HTTP有两类报文:请求报文和响应报文. HTTP ...

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

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

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

    首先我们看一个360浏览器中使用开发截图如下: 上面的Status Code:  OK (这个就是状态码) 1.状态码主要用于服务器对请求的处理结果,它是一个三位的十进制数.响应状态码分为5类,如下所 ...

  5. Nginx笔记总结十八:nginx统计响应的http状态码信息(ngx-http-status-code-counter)

    编译:./configure --prefix=/usr/local/nginx --add-module=../ngx_http_status_code_counter-master make &a ...

  6. http协议学习笔记——状态码

    1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态码. 100(继续) 请求者应当继续提出请求.服务器返回此代码表示已收到请求的第一部分,正在等待其余部分. 101(切换协议) 请求者已要 ...

  7. HTTP协议 (六) 状态码详解

    HTTP协议 (六) 状态码详解 HTTP状态码,我都是现查现用. 我以前记得几个常用的状态码,比如200,302,304,404, 503. 一般来说我也只需要了解这些常用的状态码就可以了.  如果 ...

  8. HTTP协议中状态码的应用

    HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码. 所有状态码的第一个数字代表了响应的五种状态之一.   Mark from 维基百科     消息 ...

  9. HTTP协议的状态码

    对于Web编程人员来说,熟悉了解HTTP协议的状态码是很有必要的,很多时侯可能根据HTTP协议的状态码很快就能定位到错误信息!今天整理了一下所有HTTP状态码. HTTP状态码(HTTP Status ...

  10. HTTP协议状态码详解

    HTTP状态码,我都是现查现用. 我以前记得几个常用的状态码,比如200,302,304,404, 503. 一般来说我也只需要了解这些常用的状态码就可以了.  如果是做AJAX,REST,网络爬虫, ...

随机推荐

  1. Eclipse 中Tomcat 启动 与直接启动Tomcat的区别

    这段时间不用Java 了突然发现在用的时候出问题了. 首先现在Eclipse和Tomcat,解压后 如图1所示: 图1: 进入里面的bin文件目录后发现有 如图2所示包含了startup.bat,st ...

  2. 前端代理nproxy

    一.场景/用途 前端代理的用途,相信大家都清楚.应用场景很多,如—— . 将线上的静态资源文件(JS.CSS.图片)替换为本地相应的文件,来调试线上(代码都被压缩过)的问题: . 本地开发过程,当后端 ...

  3. linux常见问题集锦-1

    http://www.cnblogs.com/itech/archive/2011/02/12/1952857.html 感谢作者分享 一.填空题:1. 在Linux系统中,以 文件 方式访问设备 . ...

  4. Hibernate常见问题

    问题1,hql条件查询报错 执行Query session.createQuery(hql) 报错误直接跳到finally 解决方案 加入 <prop key="hibernate.q ...

  5. 字符串匹配与KMP算法实现

    >>字符串匹配问题 字符串匹配问题即在匹配串中寻找模式串是否出现, 首先想到的是使用暴力破解,也就是Brute Force(BF或蛮力搜索) 算法,将匹配串和模式串左对齐,然后从左向右一个 ...

  6. Android_adb shell am/pm使用

    转自:http://blog.sina.com.cn/s/blog_51335a0001017ux5.html   adb shell am instrument [options] <COMP ...

  7. hdu 4398 STL

    题意描述半天描述不好,直接粘贴了 Now your team is participating a programming contest whose rules are slightly diffe ...

  8. MATLAB学习笔记(五)——MATLAB绘图

    (一)二维数据曲线图 一.绘制单根二维曲线 1.基本调用格式 plot(x,y) (1)x,y为长度相同的向量,分别用于储存x坐标和y坐标数据 (2)用于绘制以x,y为横,纵坐标的二维曲线. (3)举 ...

  9. 【HTML5】Web Workers

    什么是 Web Worker? 当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成. web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性 ...

  10. PHP 5.4 中经 htmlspecialchars 转义后的中文字符串为空,DeDeCMS在PHP5.4下编辑器中文不显示问题

    在加入 发布招聘功能的时候,出现问题了,就是修改招聘信息的时候.编辑器内容不显示,只显示英文,中文不显示,以前记得开发此功能没这问题啊!然后各种原因找不出,没办法,从编辑器函数入手,一步一步查,查到 ...