2017-10-21 20 views
5

यदि मेरे पास एक जेनरेटेड निर्धारित यूआरएल है जो समाप्त हो गया है, तो क्या मुझे get_headers() (PHP में) करना चाहिए ताकि यह देखने के लिए कि 403 Forbidden त्रुटि फेंक दी गई है, अन्यथा उसी यूआरएल का उपयोग करें? या यह एक बुरा विचार है क्योंकि यह एक अनावश्यक GET अनुरोध है? क्या मुझे हमेशा हर बार एक नया प्रस्तुत यूआरएल पुन: उत्पन्न करना चाहिए? मैं थोड़ा उलझन में हूं क्योंकि इस बारे में ज्यादा जानकारी नहीं है।अमेज़ॅन एस 3 - कैसे जांचें कि निर्धारित यूआरएल समाप्त हो गया है या नहीं?

उत्तर

5

यूआरएल में समय समाप्त हो गया है।

हस्ताक्षर संस्करण 2

HTT ps: //bucket.s3.amazonaws.com/foo.txt AWSAccessKeyId = AKIAABCDEFGHIJK & समय-सीमा समाप्त = १५०८६०८७६० & हस्ताक्षर = xxxxxxxxxxx

समाप्त होता है यूटीसी में समय देता है।

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

आप मूल्य निकालने और यूटीसी [time()] में वर्तमान समय के साथ यह तुलना कर सकते हैं, तो पुन: उत्पन्न या नहीं करने का फैसला।


हस्ताक्षर संस्करण 4

HTT ps: //s3.amazonaws.com/bucket/foo.txt एक्स Amz-एल्गोरिथ्म = AWS4-HMAC-SHA256 & एक्स Amz-सीमा समाप्त हो जाएगी = 3600 & एक्स Amz-क्रेडेंशियल = AKIAJRZXXXXXXXXus पूर्व-1% 2Fs3% 2Faws4_request & एक्स Amz-SignedHeaders = मेजबान & एक्स Amz-दिनांक = 20171021T190750Z & एक्स Amz-हस्ताक्षर = 8b84ae9b59e9f8a8d7066ecc39e797c8dc29848abcdef61717

एक्स-एमज़-तिथि आईएसओ 8601 प्रारूप में यूटीसी समय देता है।

आप मूल्य निकाल सकते हैं, इसे युग/यूटीसी में परिवर्तित कर सकते हैं और वर्तमान समय के साथ यूटीसी [समय()] में इसकी तुलना कर सकते हैं, फिर पुन: उत्पन्न करने का निर्णय ले सकते हैं या नहीं।

+1

बहुत बढ़िया समाधान, मुझे नहीं पता कि मैंने इसके बारे में क्यों नहीं सोचा था। हालांकि, मेरे लिए, 'अमेज़-एक्सपयर्स' सेकंड में समाप्ति समय है, जबकि 'एक्स-अम्ज़-डेट' टाइमस्टैम्प –

+1

@ डी-मार्क 'एक्स-अम्ज़- *' नया प्रारूप है, जिसे हस्ताक्षर संस्करण 4 कहा जाता है क्षेत्र जहां 2014 से पहले एडब्ल्यूएस सेवाओं को बाहर निकाला गया था, उन लोगों को पुरानी शैली का समर्थन करते हैं, जिन्हें हस्ताक्षर संस्करण 2 कहा जाता है। –

संबंधित मुद्दे