常见的应用场景: 比如返回随机图片的 API

原理: 将之前解析出来的图片链接从 echo 输出改为重定向就行了.

一开始我也没想到, 后来查看另一个能直接返回图片的 api 的h eaders, 发现是用重定向来实现的, 照猫画虎就好了. 301 为永久重定向, 不适用我这种情况. 用 302 或者 303 都行, 303 的描述更符合我的需求.
具体的实现方法是在请求头加上状态码, 只需要注意一点小细节就行了, 首先是在输出 header 之前不能有任何输出, 然后是 Location: 的 ":" 之后需要接上一个空格, 具体的我也没试过.
总之加上就好了.完整的输出如下:

header('HTTP/1.1 303 See Other'); // 重定向状态码, 可以省略

header('Location:'.$url); // 需要重定向的目标链接, 有点小坑

$url为之前解析出的图片链接,之前我一直以为Location后面必须跟东西,后面想了两天,发现可以空着的.

另一种方法, 直接返回图片. 但是需要消耗双倍流量 (服务器请求源链接的流量 + 服务器返回内容的流量)

$img = imagecreatefromjpeg($url);
header('Content-Type: image/jpeg');
imagejpeg($img);
imagedestroy($img);

区别是第一种访问会跳转, 刷新后内容不变. 第二种链接不发生变化, 每次刷新返回内容都可能不一样.