Страница не загружается во время загрузки - PullRequest
0 голосов
/ 20 октября 2019

с тех пор, как я сменил хостера, у меня проблема в том, что вы больше не можете просматривать веб-страницы при загрузке файла. Отличие заключается в том, что новый сервер использует протокол HTTP2. Он всегда работает через HTTPS. Я подозреваю, что это может быть причиной?

Загрузки защищены и будут запущены через запрос POST со следующей функцией:

public static function download($file, $filename='') {
    if(file_exists($file) && is_file($file)) {
        $filename = $filename ? $filename : basename($file);
        $filename = File::ValidateFilename($filename);
        $mime     = mime_content_type($file);
        header('Content-Description: File Transfer');
        header('Expires: 0');
        header('Content-Type: '.$mime);
        header('Content-Disposition: attachment; filename="'.$filename);
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: '.filesize($file));
        readfile($file);
        exit;
    }
    return false;
}

У кого-то еще есть проблема или кто-нибудь знаетчто делать? Заранее спасибо.

1 Ответ

0 голосов
/ 27 октября 2019

Вот как я решил это сейчас:

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

Если кто-то нажал на кнопку «Загрузить», то была запущена функция PHP (с заголовком). Но из-за невозможности загрузки и просмотра в то время, когда выполнялась одна загрузка.

Теперь загрузка не начинается с нажатия кнопки «Загрузить», а идентификатор загрузки и уникальный идентификатор сохраняются в базе данных.

До этого я создал несколько поддоменов (mirror001.domain.tld, mirror002.domain.tld и т. Д.), И все они получили доступ к моему зеркальному скрипту.

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

X = sprintf("%03d",mt_rand(1,50));
Location: mirrorX.domain.tld/UNIQUEID

Теперь скрипт зеркала использует уникальный идентификатор, чтобы проверить, была ли сгенерирована загрузка, и если да, то скрипт удаляетзапись из базы данных и начинается загрузка. Поскольку загрузка всегда выполняется на разных расстояниях, теперь каждый посетитель может продолжить просмотр моего сайта.

...