1、页面重定向
   当浏览器接受到头信息中的 Location: http://xxxx 后,就会自动跳转到 http://xxxx 指向的URL地址,这点有点类似用 js 写跳转。但是这个跳转只有浏览器知道,不管体内容里有没有东西,用户都看不到。
   例:
   header('HTTP/1.1 301 Moved Permanently');  //声明指定当前请求的网页已永久移动到新位置(301重定向)
   header("Location: http://www.baidu.com/");  //跳转
   exit;

当然也可以通过使用js和meta重定向
   echo "<script>window.location ='{$PHP_SELF}';</script>";
   echo "<meta http-equiv='refresh' content='0; url=index.php'>";
   exit;

2、人为指定返回客户端浏览器此次HTTP请求的(任意)状态
   当有些页面不想让用户再次访问时,可以人为制造一个无法访问的状态,并抛出异常
   例:
   header('HTTP/1.1 404 Not Found');
   header('status: 404 Not Found');
   exit;

3、指定网页的内容类型
   同样一个XML文件,如果头信息中指定:Content-type: application/xml 的话,浏览器会将其按照XML文件格式解析。但是,如果头信息中是:Content-type: text/xml 的话,浏览器就会将其看作纯文本解析。(浏览器不是按照扩展名解析文件的)
   例:
   header('Content-Type:text/html;charset=UTF-8');   //指明当前访问页面是html网页,utf8编码

4、附件下载
   不知道大家有没有注意,有些时候在一些网站下载东西,点下载连接以后,结果浏览器将这个附件当成网页打开了,里面显示的都是乱码,这个问题也和头信息有关。有时候浏览器根据Content-type 来判断是打开还是保存,这样有时就会判断错误(主要是网站设计者忘记写Content-type)。其实,还有一个可以来指定该内容为附件、需要保存,这个就是:Content-Disposition: attachment; filename="xxxxx"
   例:
   header('Content-type: application/x-msexcel');                              //指明当前访问页面文档类型
   header("Content-Disposition: attachment; filename='样本数据.xls'"); //指明当前浏览文件是附件

5、强制用户每次访问这个页面时获取最新资料(不是使用存在客户端的缓存)
    例:
    //告诉浏览器此页面的过期时间(用格林威治时间表示),只要是已经过去的日期即可
    header('Expires:Mon,26 Jul 1970 05:00:00 GMT');

//告诉浏览器此页面的最后更新日期(用格林威治时间表示)也就是当天,目的就是强迫浏览器获取最新资料
    header('Last-Modified:'.gmdate('D,d M Y H:i:s').'GMT');

//告诉客户端浏览器不使用缓存
    header('Cache-Control: no-cache, must-revalidate');

获取HTTP请求的状态码函数

<?php
$url = 'http://www.baidu.com';
echo $getHTTP_CODE=getHttpCode($url); /**
* 获取HTTP请求的状态码
* @author: martinzhang
* @param: $url 目标URL地址
* @return: int 返回此URL对应状态码值
*/
function getHttpCode($url){
$curl = curl_init();
curl_setopt($curl,CURLOPT_URL,$url); //设置需要获取的URL地址,也可以在curl_init()函数中设置
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); //设置将curl_exec()获取的信息以文件流的形式返回(return),而不是直接输出。1表示return;0表示直接输出
curl_setopt($curl,CURLOPT_TIMEOUT,3); //设置最大超时时间,单位:秒
curl_setopt($curl,CURLOPT_HEADER,1); //获取Header
curl_setopt($curl,CURLOPT_NOBODY,1); //不需要Body内容
curl_exec($curl);
$getCode = curl_getinfo($curl,CURLINFO_HTTP_CODE);
curl_close($curl);
return $getCode;
}
?>

附:HTTP一般常见的状态码

一、【1xx 保留】

100 Continue
初始的请求已经接受,客户应当继续发送请求的其余部分

101 Switching Protocols
服务器将遵从客户的请求转换到另外一种协议

二、【2xx 成功处理了请求的状态码】

200 OK
服务器已成功处理了请求并提供了请求的网页

201 Created
服务器已经创建了文档,Location头给出了它的URL。

202 Accepted
已经接受请求,但处理尚未完成。

203 Non-Authoritative Information
文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝

204 No Content
服务器成功处理了请求,但没有返回任何内容。

205 Reset Content
没有新的内容,但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容

206 Partial Content
客户发送了一个带有Range头的GET请求,服务器完成了它

三、【3xx 重定向 每次请求中使用重定向不要超过 5 次】

300 Multiple Choices
客户请求的文档可以在多个位置找到,这些位置已经在返回的文档内列出。如果服务器要提出优先选择,则应该在Location应答头指明。

301 Moved Permanently
请求的网页已永久移动到新位置。当URLs发生变化时,使用301代码。搜索引擎索引中保存新的URL。

302 Found
类似于301,请求的网页临时移动到新位置。搜索引擎索引中保存原来的URL。

303 See Other
类似于301/302,不同之处在于,如果原来的请求是POST,Location头指定的重定向目标文档应该通过GET提取

304 Not Modified
如果网页自请求者上次请求后没有更新,则用304代码告诉搜索引擎机器人,可节省带宽和开销。

305 Use Proxy
客户请求的文档应该通过Location头所指明的代理服务器提取

307 Temporary Redirect
和302(Found)相同。许多浏览器会错误地响应302应答进行重定向,即使原来的请求是 POST,即使它实际上只能在POST请求的应答是303时才能重定向。由于这个原因,HTTP 1.1新增了307,以便更加清除地区分几个状态代码: 当出现303应答时,浏览器可以跟随重定向的GET和POST请求;如果是307应答,则浏览器只能跟随对GET请求的重定向。

四、【4xx 客户端错误 表示请求可能出错,妨碍了服务器的处理】

400 Bad Request
服务器不理解请求的语法。

401 Unauthorized
客户试图未经授权访问受密码保护的页面。应答中会包含一个WWW-Authenticate头,浏览器据此显示用户名字/密码对话框,然后在填写合适的Authorization头后再次发出请求。

403 Forbidden
服务器拒绝请求。

404 Not Found
服务器找不到请求的网页(服务器上不存在的网页经常会返回此代码)。

405 Method Not Allowed
请求方法(GET、POST、HEAD、Delete、PUT、TRACE等)对指定的资源不适用。

406 Not Acceptable
指定的资源已经找到,但它的MIME类型和客户在Accpet头中所指定的不兼容

407 Proxy Authentication Required
类似于401,表示客户必须先经过代理服务器的授权。

408 Request Timeout
在服务器许可的等待时间内,客户一直没有发出任何请求。客户可以在以后重复同一请求。

409 Conflict
通常和PUT请求有关。由于请求和资源的当前状态相冲突,因此请求不能成功。

410 Gone
请求的资源永久删除后,服务器返回此响应。该代码与 404(未找到)代码相似,但在资源以前存在而现在不存在的情况下,有时用来替代404 代码。如果资源已永久删除,应当使用 301 指定资源的新位置。

411 Length Required
服务器不能处理请求,除非客户发送一个Content-Length头。

412 Precondition Failed
请求头中指定的一些前提条件失败

413 Request Entity Too Large
目标文档的大小超过服务器当前愿意处理的大小。如果服务器认为自己能够稍后再处理该请求,则应该提供一个Retry-After头

414 Request URI Too Long
URI太长

416 Requested Range Not Satisfiable
服务器不能满足客户在请求中指定的Range头

417 Expectation Failed
预期失败

五、【5xx 服务器错误 表示服务器在处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错】

500 Internal Server Error
服务器内部遇到错误,无法完成请求。

501 Not Implemented
服务器不支持实现请求所需要的功能。例如,客户发出了一个服务器不支持的PUT请求

502 Bad Gateway
服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答

503 Service Unavailable
服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。

504 Gateway Timeout
由作为代理或网关的服务器使用,表示不能及时地从远程服务器获得应答

505 HTTP Version Not Supported
服务器不支持请求中所指明的HTTP版本

HTTP请求之:PHP函数header常用功能的更多相关文章

  1. Fiddler抓取https请求 & Fiddler抓包工具常用功能详解

    Fiddler抓取https请求 & Fiddler抓包工具常用功能详解   先来看一个小故事: 小T在测试APP时,打开某个页面展示异常,于是就跑到客户端开发小A那里说:“你这个页面做的有问 ...

  2. C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法

    C#构造方法(函数)   一.概括 1.通常创建一个对象的方法如图: 通过  Student tom = new Student(); 创建tom对象,这种创建实例的形式被称为构造方法. 简述:用来初 ...

  3. matlab进阶:常用功能的实现,常用函数的说明

    常用功能的实现 获取当前脚本所在目录 current_script_dir = fileparts(mfilename('fullpath')); % 结尾不带'/' 常用函数的说明 bsxfun m ...

  4. Python常用功能函数

    Python常用功能函数汇总 1.按行写字符串到文件中 import sys, os, time, json def saveContext(filename,*name): format = '^' ...

  5. Python常用功能函数总结系列

    Python常用功能函数系列总结(一) 常用函数一:获取指定文件夹内所有文件 常用函数二:文件合并 常用函数三:将文件按时间划分 常用函数四:数据去重 Python常用功能函数系列总结(二) 常用函数 ...

  6. 前端常用功能记录(二)—datatables表格(转)

    前端常用功能记录(二)—datatables表格 并不是所有的后台开发都有美工和前端工程师来配合做页面,为了显示数据并有一定的美感,jQuery的DataTables插件对于像我这样的前端菜鸟来说真是 ...

  7. 从零开始学习jQuery (十) jQueryUI常用功能实战

    一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即使你会使用jQuery也能在阅读中发现些许秘籍. 本文是实战篇. 使用jQueryUI完成制作网站 ...

  8. UCOS 请求任务删除函数 及其应用

    有时候,如果任务A拥有内存缓冲区或信号量之类的资源,而任务B想删除该任务,这些资源就可能由于没被释放而丢失.在这种情况下,用户可以想法子让拥有这些资源的任务在使用完资源后,先释放资源,再删除自己.用户 ...

  9. fiddler抓包常用功能详解

    一.基础部分: 1.设置代理ip及端口,tools --> telerik fiddler options --> connections -->勾选 “ Allow romote ...

随机推荐

  1. Centos Python2 升级到Python3

    1. 从Python官网到获取Python3的包, 切换到目录/usr/local/src #wget https://www.python.org/ftp/python/3.5.1/Python-3 ...

  2. CentOS6 下rsync服务器配置

    一.rsync 简介 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录. Rsy ...

  3. Oracle函数--字符串拼接

    常用的字符串聚合(拼接)函数介绍 1.WMSYS.WM_CONCAT 从oracle 10G开始支持,使用案例如下: select deptno,wmsys.wm_concat(ename) from ...

  4. web移动端input获得光标Fixed定位失效解决方案

    移动端业务开发,iOS 下经常会有 fixed 元素和输入框(input 元素)同时存在的情况. 但是 fixed元素在有软键盘唤起的情况下,会出现许多莫名其妙的问题. 这篇文章里就提供一个简单的有输 ...

  5. HTTP协议详解--转载http://blog.csdn.net/gueter/article/details/1524447

    引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...

  6. UML常用图的几种关系的总结

    在UML的 类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization), 关联(Association), 聚合(Aggregation), 组合(Com ...

  7. 黄聪:说说JSON和JSONP,也许你会豁然开朗(转)

    前言 由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现. 当然了,通过调用强大的PhoneGap插件然后打包,你可以实现100%的Socke ...

  8. VS2013的一些常用快捷键

    1.回到上一个光标位置/前进到下一个光标位置 1)回到上一个光标位置:使用组合键“Ctrl + -”: 2)前进到下一个光标位置:“Ctrl + Shift + - ”. 2.复制/剪切/删除整行代码 ...

  9. ubuntu 下载额外数据不成功”的恼人提示通知

    最近用Ubunt也遇到这个问题,搜到这个答案 参考原文链接: http://forum.ubuntu.org.cn/viewtopic.php?t=387865 2.移除“下载额外数据不成功”的恼人提 ...

  10. mysql存储emoji表情

    微信获取的用户昵称nickname中带有emoji表情,转换成字符码后是这种形式“\xF0\x9F\x91\x8D\xE6\x94...”, 直接保存可能出现以下错误 Caused by: java. ...