Ссылка действовала час, но повторное скачивание уже запрещено: проверяем реальный срок доступа

Клиент получил временную ссылку на документ. Загрузка началась, связь оборвалась, повтор закончился отказом. В интерфейсе написано «ссылка действует час», а прошло гораздо меньше. Прежде чем увеличивать число повторов, надо проверить, какой срок действительно ограничивает доступ и считается ли возобновление новым запросом.
У ссылки может быть больше одного ограничителя
Для подписанных URL в Amazon S3 срок ограничивается не только указанным временем, но и действительностью учётных данных, которыми подписан запрос. Временная сессия может закончиться раньше. Дополнительные ограничения доступа и отзыв разрешений также влияют на результат. Эти правила нельзя автоматически переносить на любой совместимый сервис без проверки его документации.
Внутри приложения полезно различать желаемый срок, фактический предел выданных полномочий и публичное обещание пользователю. Если источник позволяет выдать доступ лишь на десять минут, надпись «час» не делает ссылку рабочей. Надёжнее вычислить реальный срок и показать корректное сообщение либо выдавать новую ссылку после повторной проверки прав.
| Событие | Секунды | Значение |
|---|---|---|
| Заданный срок ссылки | 900 | Желаемый предел |
| Остаток временных полномочий | 600 | Раньше ограничивает доступ |
| Первый старт | 500 | Укладывается в окно |
| Обрыв спустя 150 секунд | 650 | Новая попытка начинается уже после эффективного срока |
Окончание загрузки и начало нового запроса — разные моменты
В описанном Amazon S3 сценарии срок проверяется при HTTP-запросе: начатая до истечения загрузка может продолжаться после него. Но повтор после разрыва — новая попытка, которая уже способна не пройти. Поэтому расчёт «весь файл обязан скачаться до срока» не является точным описанием этого поведения.
Для своего хранилища проверьте конкретные правила, поддержку частичного скачивания и требования к подписанным заголовкам. Ошибка подписи, отказ в доступе и истечение времени — разные причины. Не маскируйте их одним сообщением «плохой интернет».
Как организовать повторную выдачу
Пользователь обращается к приложению за новой ссылкой, приложение проверяет актуальную сессию и право на конкретный файл. Только затем выдаётся новый ограниченный доступ. Старый номер документа или сам факт обладания прежним URL не должен навсегда заменять авторизацию.
Не записывайте полные подписанные URL в общие журналы и аналитику без необходимости: владение такой строкой может давать доступ к объекту. Для разбора обычно достаточно технического ID запроса, объекта в безопасной форме, срока и кода причины. Содержимое закрытого документа в диагностический тикет не нужно.
Когда дело не во времени
- У подписывающей стороны нет нужного разрешения или изменена политика хранилища.
- Клиент использовал другой метод или значимый заголовок, чем предусмотрено подписью.
- Посредник изменил строку запроса или заголовки.
- Приложение выдало ссылку на неверную версию или имя объекта.
Проверяйте учебный объект в собственном хранилище. Для разделения причин сохраните безопасные признаки запроса и серверный ответ. Не отправляйте действующие ключи и закрытые ссылки в сторонние публичные проверяющие сервисы.
Старая вкладка не должна выдавать старое обещание
Клиент способен оставить экран открытым надолго и нажать скачивание позже. Кнопка может сначала запросить свежий доступ у приложения, вместо хранения одной ссылки с момента загрузки страницы. Такое действие всё равно требует повторной проверки прав. Это уменьшает число неожиданных истечений и позволяет показать понятную причину отказа прямо в кабинете.
Модель первого старта и повторной попытки
Калькулятор использует только относительные секунды, без настоящего URL. Эффективный предел берётся как минимум двух введённых сроков. Затем проверяется первый старт и момент нового запроса после условного обрыва и ожидания. Результат не учитывает дополнительные политики, отзыв разрешений и сетевые особенности сервиса.
Такая модель помогает выбрать поведение интерфейса: повторить ещё действующий запрос, запросить свежую ссылку или объяснить отсутствие доступа. Она не даёт гарантии доставки файла, зато убирает ложное обещание, что одно значение «TTL» описывает всю цепочку скачивания.
Окно старта и повтора временной ссылки
Учебная модель двух сроков. Не вводите действительные подписанные URL или ключи. Уже начатое скачивание не объявляется прерванным только по истечению TTL. Расчёт выполняется на вашем устройстве, введённые данные никуда не отправляются.
Материалы для проверки
Если нужна реализация
Состав работ зависит от текущего проекта и подтверждённой причины. Можно обсудить диагностику или разработку подходящего решения.
