php - Laravel 在使用 HTTPS 时添加/删除字符

标签 php laravel ssl https binary

我的 laravel 项目中有一些 zip 文件,它们是通过简单的方法下载的

return response()->download($path);

现在我添加了强制 https 到网站:

if (!(isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' ||
   $_SERVER['HTTPS'] == 1) ||
   isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&
   $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'))
{
   $redirect = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
   header('HTTP/1.1 301 Moved Permanently');
   header('Location: ' . $redirect);
   exit();
}

现在我无法读取 zip 文件,它们似乎已损坏。

我用十六进制编辑器打开其中一个,我看到开头多了一个 0a0a 字符。

我不知道为什么会这样,也不知道这意味着什么。尤其是如何在不编辑下载文件的情况下修复它。

最佳答案

这可能是您的标题问题,请尝试查看这篇博文,看看是否可以解决您的问题。

https://perishablepress.com/http-headers-file-downloads/

<?php // HTTP Headers for ZIP File Downloads
// https://perishablepress.com/press/2010/11/17/http-headers-file-downloads/

// set example variables
$filename = "Inferno.zip";
$filepath = "/var/www/domain/httpdocs/download/path/";

// http headers for zip downloads
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".$filename."\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filepath.$filename));
ob_end_flush();
@readfile($filepath.$filename);
?>

关于php - Laravel 在使用 HTTPS 时添加/删除字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49450380/

相关文章:

Laravel eloquent 多关系搜索栏

php - 本地.错误: PDOException: SQLSTATE[HY000]: General error: 1615 Prepared statement needs to be re-prepared in happen in every morning

ssl - 如果我获得了 ssl 证书 - 我仍然可以使用 http 访问我的网页吗?

php - 在现有表中添加更多列,但事实并非如此

php图像和文本上传不起作用

php - 将 php 脚本从 IIS 移动到 Linux - 脚本失败

php - 我无法授予 apache 写入文件的权限,我做错了什么?

php - 如果索引存在于 Laravel 迁移中,如何检查它们?

ssl - 通过 TLS 将 Kafka 生产者/消费者连接到代理

ssl - nginx - 爬虫/机器人没有 ssl