返回response状态码
header('HTTP/1.1 200 OK'); // ok 正常访问 header('HTTP/1.1 404 Not Found'); //通知浏览器 页面不存在 header('HTTP/1.1 301 Moved Permanently'); //设置地址被永久的重定向 301
header('HTTP/1.1 304 Not Modified'); //告诉浏览器文档内容没有发生改变
设置修改 X-Powered-By信息
header('X-Powered-By: PHP/6.0.0');
文档语言
header('Content-language: en');
内容长度
header('Content-Length: 1024');
内容类型
header('Content-Type: text/html; charset=utf-8'); //网页格式,网页编码 header('Content-Type: text/plain'); //纯文本格式
设置浏览器最后一次修改时间
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT');
对当前文档禁用缓存
header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache");
header('HTTP/1.1 401 Unauthorized'); header('WWW-Authenticate: Basic realm="Top Secret"');
跳转页面
header('Location:'.$url); //Location和":"之间无空格 header('Refresh: 10; url=http://www.baidu.com/'); //10s后跳转
声明一个下载的文件
// 下载 zip header('Content-Type: application/octet-stream'); //设置内容类型 header('Content-Disposition: attachment; filename="ITblog.zip"'); //设置MIME用户作为附件 header('Content-Transfer-Encoding: binary'); //设置传输方式 readfile('test.zip'); // 打开文件,输出内容 // 下载 execl header('Content-Disposition: attachment; filename=ithhc.xlsx'); header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Length: '.filesize('./test.xls')); //设置内容长度 header('Content-Transfer-Encoding: binary'); header('Cache-Control: must-revalidate'); header('Pragma: public'); // 任何人都可访问 readfile('./test.xls');
ajax 设置Access-Control-Allow-Origin实现跨域访问
//在被请求的Response header中加入 //指定某域名(http://client.runoob.com)跨域访问 header('Access-Control-Allow-Origin:http://client.runoob.com'); //指定多个域名(http://client1.runoob.com、http://client2.runoob.com等)跨域访问 $allow_origin = array( 'http://client1.runoob.com', 'http://client2.runoob.com' ); header('Access-Control-Allow-Origin:'.$origin); // 指定允许其他域名访问 header('Access-Control-Allow-Origin:*'); //设置允许的跨域header,区别普通请求还是ajax请求 header('Access-Control-Allow-Headers: X-Requested-With,X_Requested_With'); // 响应类型 header('Access-Control-Allow-Methods:POST'); // 带 cookie 的跨域访问 header('Access-Control-Allow-Credentials: true'); // 响应头设置 header('Access-Control-Allow-Headers:x-requested-with,content-type,X-CSRF-Token');
限制iframe网页嵌套
使用 X-Frame-Options 有三个可选的值:
DENY:浏览器拒绝当前页面加载任何Frame页面
SAMEORIGIN:frame页面的地址只能为同源域名下的页面
ALLOW-FROM:origin为允许frame加载的页面地址
header('X-Frame-Options:Deny'); // php add_header X-Frame-Options SAMEORIGIN // nignx Header always append X-Frame-Options SAMEORIGIN // Apache
开启了XSS保护
0:禁用XSS保护;
1:启用XSS保护;
1; mode=block:启用XSS保护,并在检查到XSS攻击时,停止渲染页面(例如IE8中,检查到攻击时,整个页面会被一个#替换);
header("X-XSS-Protection: 1");
通常浏览器会根据响应头的Content-Type字段来分辨它们的类型。有些资源的Content-Type是错的或者未定义。这时,某些浏览器会启用MIME-sniffing来猜测该资源的类型,解析内容并执行。利用浏览器的这个特性,攻击者甚至可以让原本应该解析为图片的请求被解析为JavaScript。通过下面这个响应头可以禁用浏览器的类型猜测行为:
header("X-Content-Type-Options:nosniff");