php设置HTTP头信息及HTTP头信息常见用法

通过设置头信息,可以来完成许多功能。比如,设置内容类型、重定向、允许跨域请求等等。

设置HTTP头语法

在php中设置响应头、请求头信息非常的简单,语法如下:

header(string $stri)

常见应用

下面来介绍几种非常常见的头信息用法。

设置文本类型

相信大家肯定非常熟悉下面的一行代码:

header("Content-Type:text/html;charset=utf8")

Content-Type即表示文本类型。常见的文本类型有:

  • text/html : HTML格式
  • text/plain :纯文本格式
  • text/xml : XML格式
  • image/gif :gif图片格式
  • image/jpeg :jpg图片格式
  • image/png:png图片格式

重定向

重定向在我们平时用的也是非常多的,常见的场景有:

  • 当服务端发送错误时,可以重定向到错误页面;
  • 当检测当前浏览器是移动端时,跳转到m.xxx.xx;
  • 从http协议跳转到https协议

在http中,重定向又分为两种,分别为301永久重定向以及302临时重定向。下面分别演示两种重定向的代码:

// 301
header('HTTP/1.1 301 Moved Permanently');
header('Location: https://www.baidu.com/');

// 302
header('Location: https://www.baidu.com/');

跨域资源共享

默认情况下,XHR对象只能访问同域资源。我们可以通过设置响应头信息来允许跨域请求。

下面展示三种情况下的允许跨域请求

允许所有域名访问

header('Access-Control-Allow-Origin:*');

允许单个域名访问

header('Access-Control-Allow-Origin:http://www.baidu.com');

允许多个域名访问

$allowOrigin = [
 'http://demo.com',
 'http://www.demo.com',
 'http://learnjs.com'
];

$origin = $_SERVER['HTTP_ORIGIN'] ?? '';  

if (in_array($origin, $allowOrigin)) {
   header("Access-Control-Allow-Origin:$origin");
}

执行下载请求

这里直接贴代码了

<?php

$file = './20101220130509576539.jpg';

header("Content-type:image/jpg");
header("Content-Disposition:attachment;filename=$file");
header("Content-Length:".filesize($file));

readfile($file);