HTTPS-запрос подразумевает HTTP-заголовок ответа и предупреждение о смешанном содержимом — как избежать

На сайте PHP я запрашиваю изображения (фотографии профиля пользователя) из файла PHP, изображение загружается явно, используя HTTPS как весь сайт, где включен HSTS.

Проблема в том, что сайт выдает предупреждение «Смешанное содержимое» в Chrome и Firefox, даже если ни один ресурс не загружен с использованием HTTP — все они являются относительными или явными HTTPS в исходном коде.

Когда я смотрю на вкладку сети в инструментах разработчика Chrome, я вижу, что изображение первоначально запрашивается с использованием HTTPS, но затем выполняется внутреннее перенаправление 307 с использованием HTTP, и, наконец, изображение удаляется с помощью HTTPS.
HTTP-запрос во вкладке сети Chrome

В PHP-файле, который возвращает изображение, запрос направляется через index.php и .htaccess с использованием простого rewriterule

RewriteRule ^([^/.]+)/([^/.]+)/?$     index.php?action=$1&data1=$2  [L,QSA]

И файл PHP очень прост

if(!isset($_GET["f"]))die("filepath missing");
$file = APP."/filecache/".$_GET["f"];
if(file_exists($file)){
if(substr($_GET["f"],-3)=="jpg") Header("Content-Type: image/jpeg");
if(substr($_GET["f"],-3)=="png") header("Content-Type: image/png");
header('Cache-control: max-age='.(60*60*24*365));
header('Expires: '.date("Y-m-d H:i:s",strtotime("+365 days")));
header('Last-Modified: '.gmdate(DATE_RFC1123,filemtime($file)));
readfile($file);
}else{
die("no such file");
}

Веб-приложение работает «отлично», но предупреждение о смешанном контенте действительно расстраивает меня, поэтому я буду очень признателен за любые советы или идеи, которые могут сработать.

Сайт работает на DO VPS, Apache / Nginx с PHP-FPM 7.1.

С уважением и счастливых праздников,
отметка

5

Решение

Я не знаю, почему перенаправление с https возвращается к http.
Я хотел бы обойти использование RewriteRule с абсолютным URI, включая схему, например:

RewriteRule ^([^/.]+)/([^/.]+)/?$  https://%{HTTP_HOST}/index.php?action=$1&data1=$2  [L,QSA]

Я не пробовал эту строку в моем .htaccess, так как у меня нет такого варианта использования, поэтому, пожалуйста, попробуйте сами, если это подходит.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]