Если у меня есть созданный предварительно назначенный URL, срок действия которого истек, я должен делать get_headers()
(в PHP), чтобы увидеть, если 403 Forbidden
выдается ошибка, в противном случае использовать тот же URL? Или это плохая идея, потому что это ненужный запрос GET? Должен ли я всегда просто заново генерировать новый предварительно назначенный URL каждый раз? Я немного сбит с толку, потому что, кажется, не так много информации об этом.
У URL есть время истечения.
Подпись Версия 2
https: //bucket.s3.amazonaws.com/foo.txt? AWSAccessKeyId = AKIAABCDEFGHIJK&Истекает = 1508608760&Подпись = XXXXXXXXXXX
Истекает дает время в UTC.
$ date -d @1508608760
Sat Oct 21 17:59:20 UTC 2017
Вы можете извлечь значение и сравнить его с текущим временем в UTC [time()
], тогда решите регенерировать или нет.
Подпись Версия 4
HTT
пс: //s3.amazonaws.com/bucket/foo.txt X-Amz-Algorithm = AWS4-HMAC-SHA256&
X-Amz-Истекает = 3600&X-Amz-удостоверени = AKIAJRZXXXXXXXXus-восток-1% 2Fs3% 2Faws4_request&X-Amz-SignedHeaders = хост&X-Amz-Date = 20171021T190750Z&X-Amz-Подпись = 8b84ae9b59e9f8a8d7066ecc39e797c8dc29848abcdef61717
X-Amz-Date дает время UTC в формате ISO 8601.
Вы можете извлечь значение, преобразовать его в эпоху / UTC и сравнить его с текущим временем в UTC [time ()], а затем принять решение о восстановлении или нет.
Если вы используете Memcached (или аналогичный), у вас есть возможность отправить предопределенный URL-адрес в Memcached с тем же сроком действия.
Примерно так (псевдо-php код):
$mc->set($your_key, $url, $expiration);
Таким образом, вы можете получить URL с помощью
$url = $mc->get($your_key);
Если $ mc-> get возвращает false, вы должны заново сгенерировать предварительно назначенный URL.
На macOS используйте date -r 1535416265
,