2017-10-21 20 views
5

Nếu tôi có URL được chỉ định đã tạo hết hạn, tôi có nên thực hiện get_headers() (bằng PHP) để xem có lỗi nào được ném ra không, nếu không sử dụng cùng một URL đó? Hay đó là một ý tưởng tồi bởi vì đó là một yêu cầu GET không cần thiết? Tôi có nên luôn tạo lại URL được chỉ định mới mỗi lần không? Tôi hơi bối rối vì dường như không có nhiều thông tin về điều này.Amazon S3 - Cách kiểm tra xem URL được chỉ định có hết hạn không?

Trả lời

5

URL có thời gian hết hạn tại.

Chữ ký Version 2

htt ps: //bucket.s3.amazonaws.com/foo.txt AWSAccessKeyId = AKIAABCDEFGHIJK & Expires = 1508608760 & Signature = xxxxxxxxxxx

Hết hạn cho thời gian ở UTC.

$ date -d @1508608760 
Sat Oct 21 17:59:20 UTC 2017 

Bạn có thể trích xuất giá trị và so sánh nó với thời gian hiện tại theo UTC [time()], sau đó quyết định tạo lại hay không.


Chữ ký Version 4

htt ps: //s3.amazonaws.com/bucket/foo.txt X-AMZ-Thuật toán = AWS4-HMAC-SHA256 & X-AMZ-Expires = 3600 & X-AMZ-Credential = AKIAJRZXXXXXXXXus đông-1% 2Fs3% 2Faws4_request & X-AMZ-SignedHeaders = máy chủ & X-AMZ-ngày = 20171021T190750Z & X-AMZ-Signature = 8b84ae9b59e9f8a8d7066ecc39e797c8dc29848abcdef61717

X-Amz-Date cung cấp thời gian UTC ở định dạng ISO 8601.

Bạn có thể trích xuất giá trị, chuyển đổi nó thành epoch/UTC và so sánh nó với thời gian hiện tại trong UTC [time()], sau đó quyết định tạo lại hay không.

+1

Giải pháp tuyệt vời, không biết tại sao tôi không nghĩ về điều đó. Tuy nhiên, đối với tôi, 'Amz-Expires' là thời gian hết hạn tính bằng giây, trong khi 'X-Amz-Date' là dấu thời gian –

+1

@ D-Marc' X-Amz- * 'là định dạng mới hơn, được gọi là Signature Version 4 Các khu vực nơi dịch vụ AWS được triển khai trước khoảng năm 2014 hỗ trợ những dịch vụ cộng với kiểu cũ hơn, được gọi là Signature Version 2. –

Các vấn đề liên quan