您可以提取原始文件的内容,计算出它的 MIME 类型,然后制作您自己的响应并给出正确的标题。
我自己使用 PDF 库执行此操作,但您可以修改为使用 file_get_contents() 拉取远程资源:
return Response::make(
$pdf,
200,
array(
'Content-Description' => 'File Transfer',
'Cache-Control' => 'public, must-revalidate, max-age=0, no-transform',
'Pragma' => 'public',
'Expires' => 'Sat, 26 Jul 1997 05:00:00 GMT',
'Last-Modified' => ''.gmdate('D, d M Y H:i:s').' GMT',
'Content-Type' => 'application/pdf', false,
'Content-Disposition' => ' attachment; filename="chart.pdf";',
'Content-Transfer-Encoding' => ' binary',
'Content-Length' => ' '.strlen($pdf),
'Access-Control-Allow-Origin' => $origin,
'Access-Control-Allow-Methods' =>'GET, PUT, POST, DELETE, HEAD, PATCH',
'Access-Control-Allow-Headers' =>'accept, origin, content-type',
'Access-Control-Allow-Credentials' => 'true')
);
您需要将$pdf 更改为文件的数据,将Content-Type 更改为包含数据所在文件的mimetype,Content-Disposition 是您希望它显示为的文件名。
不确定这是否可行,我只是让浏览器弹出一个 PDF 下载,所以我不确定它是否适用于嵌入 CDN 文件...不过值得一试。