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,网络爬虫, ...
随机推荐
- hp unix_ssh
http://www.cyberciti.biz/faq/howto-hpux-sshd-service-startup-shutdown/ http://searchnetworking.techt ...
- 最新php环境搭建
参考文章:http://jingyan.baidu.com/article/29697b912f6539ab20de3cf8.html
- mac 下修改Hosts文件
最近Google网站老是打不开,具体原因大家都明白,不过修改Hosts文件后,就能访问了,也算不上原创,网上一搜就能找到,自己操作记录下,希望有刚接触Mac 系统的童鞋有帮助. 第一步:打开Finde ...
- html5 表单样式 表单验证1 2 3
html5 表单样式 ie9以下不支持 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...
- laravel框架session使用教程
laravel是一款php框架了,在使用laravel时会碰到session使用问题了,在使用过程中碰到一些问题与一些应用的例子. 用Laravel开发应用,把原有的代码copy过来,以前的代码ses ...
- Struts2 Convention插件的使用
转自:http://chenjumin.iteye.com/blog/668389 1.常量说明 struts.convention.result.path="/WEB-INF/conten ...
- C++ 学习的网站
C++入门教程: http://see.xidian.edu.cn/cpp/biancheng/cpp/rumen/
- matlab中的ishghandle
ishghandle True for Handle Graphics object handles. ishghandle(H) returns an array that contains 1's ...
- Linux常用命令_(文件操作)
对文件的操作主要有以下命令: touch.cp.rm.mv.ln.mkdir.rmdir
- div垂直居中 css div盒子上下垂直居中
div垂直居中 css div盒子上下垂直居中,让DIV盒子在任何浏览器中任何分辨率的显示屏浏览器中处于水平居中和上下垂直居中. div垂直居中常用于单个盒子,如一个页面里只有一个登录布局,使用div ...