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, );
即可。此时 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 协议的(请求行的)请求方法 及 (响应行的)状态码的更多相关文章
- Javaweb学习笔记——(十)——————response对象,response字符流缓冲器,响应头,状态码,重定向,requset对象,路径和乱码
请求响应对象: request和response *当服务器接收都请求后,服务器会创建request和response对象,把请求数据封装到request对象中: *然后调用Servlet的sevic ...
- http协议详解及htt面试题目,常见的http状态码
http协议详解及htt面试题目,常见的http状态码 HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的.HTTP有两类报文:请求报文和响应报文. HTTP ...
- 19. HTTP协议二:HTTP请求与响应、常见状态码
HTTP请求与响应 HTTP请求 HTTP请求是指从客户端到服务器端的请求消息.HTTP请求主要由三部分构成,请求行.请求头(headers).body(请求数据). 上图是笔者用Charles抓包工 ...
- php笔记06:http响应中的状态码
首先我们看一个360浏览器中使用开发截图如下: 上面的Status Code: OK (这个就是状态码) 1.状态码主要用于服务器对请求的处理结果,它是一个三位的十进制数.响应状态码分为5类,如下所 ...
- Nginx笔记总结十八:nginx统计响应的http状态码信息(ngx-http-status-code-counter)
编译:./configure --prefix=/usr/local/nginx --add-module=../ngx_http_status_code_counter-master make &a ...
- http协议学习笔记——状态码
1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态码. 100(继续) 请求者应当继续提出请求.服务器返回此代码表示已收到请求的第一部分,正在等待其余部分. 101(切换协议) 请求者已要 ...
- HTTP协议 (六) 状态码详解
HTTP协议 (六) 状态码详解 HTTP状态码,我都是现查现用. 我以前记得几个常用的状态码,比如200,302,304,404, 503. 一般来说我也只需要了解这些常用的状态码就可以了. 如果 ...
- HTTP协议中状态码的应用
HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码. 所有状态码的第一个数字代表了响应的五种状态之一. Mark from 维基百科 消息 ...
- HTTP协议的状态码
对于Web编程人员来说,熟悉了解HTTP协议的状态码是很有必要的,很多时侯可能根据HTTP协议的状态码很快就能定位到错误信息!今天整理了一下所有HTTP状态码. HTTP状态码(HTTP Status ...
- HTTP协议状态码详解
HTTP状态码,我都是现查现用. 我以前记得几个常用的状态码,比如200,302,304,404, 503. 一般来说我也只需要了解这些常用的状态码就可以了. 如果是做AJAX,REST,网络爬虫, ...
随机推荐
- Eclipse 中Tomcat 启动 与直接启动Tomcat的区别
这段时间不用Java 了突然发现在用的时候出问题了. 首先现在Eclipse和Tomcat,解压后 如图1所示: 图1: 进入里面的bin文件目录后发现有 如图2所示包含了startup.bat,st ...
- 前端代理nproxy
一.场景/用途 前端代理的用途,相信大家都清楚.应用场景很多,如—— . 将线上的静态资源文件(JS.CSS.图片)替换为本地相应的文件,来调试线上(代码都被压缩过)的问题: . 本地开发过程,当后端 ...
- linux常见问题集锦-1
http://www.cnblogs.com/itech/archive/2011/02/12/1952857.html 感谢作者分享 一.填空题:1. 在Linux系统中,以 文件 方式访问设备 . ...
- Hibernate常见问题
问题1,hql条件查询报错 执行Query session.createQuery(hql) 报错误直接跳到finally 解决方案 加入 <prop key="hibernate.q ...
- 字符串匹配与KMP算法实现
>>字符串匹配问题 字符串匹配问题即在匹配串中寻找模式串是否出现, 首先想到的是使用暴力破解,也就是Brute Force(BF或蛮力搜索) 算法,将匹配串和模式串左对齐,然后从左向右一个 ...
- Android_adb shell am/pm使用
转自:http://blog.sina.com.cn/s/blog_51335a0001017ux5.html adb shell am instrument [options] <COMP ...
- hdu 4398 STL
题意描述半天描述不好,直接粘贴了 Now your team is participating a programming contest whose rules are slightly diffe ...
- MATLAB学习笔记(五)——MATLAB绘图
(一)二维数据曲线图 一.绘制单根二维曲线 1.基本调用格式 plot(x,y) (1)x,y为长度相同的向量,分别用于储存x坐标和y坐标数据 (2)用于绘制以x,y为横,纵坐标的二维曲线. (3)举 ...
- 【HTML5】Web Workers
什么是 Web Worker? 当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成. web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性 ...
- PHP 5.4 中经 htmlspecialchars 转义后的中文字符串为空,DeDeCMS在PHP5.4下编辑器中文不显示问题
在加入 发布招聘功能的时候,出现问题了,就是修改招聘信息的时候.编辑器内容不显示,只显示英文,中文不显示,以前记得开发此功能没这问题啊!然后各种原因找不出,没办法,从编辑器函数入手,一步一步查,查到 ...