كيفية الحصول على البيانات الوصفية لملف http؟

StackOverflow https://stackoverflow.com/questions/70782

  •  09-06-2019
  •  | 
  •  

سؤال

كيفية الحصول على تاريخ إنشاء الملف أو حجم الملف، على سبيل المثال Hello.jpg في http://www.mywebsite.com/now/Hello.jpg(note:عنوان URL هذا غير موجود)؟الغرض من هذا السؤال هو جعل تطبيقي يعيد تنزيل الملفات من أي موقع ويب عندما يكتشف أن موقع الويب يحتوي على نسخة محدثة من الملفات وأن الملفات الموجودة في المجلد المحلي الخاص بي قديمة.أيه أفكار؟

هل كانت مفيدة؟

المحلول

إذا استخدمت طلب HEAD، فسوف يرسل رؤوسًا للمورد، وهناك يمكنك التحقق من رؤوس التحكم في ذاكرة التخزين المؤقت التي ستخبرك ما إذا كان المورد قد تم تعديله، ووقت التعديل الأخير، والحجم (طول المحتوى)، والتاريخ.

$ telnet www.google.com 80
Trying 216.239.59.103...
Connected to www.l.google.com.
Escape character is '^]'.
HEAD /intl/en_ALL/images/logo.gif HTTP/1.0

HTTP/1.0 200 OK
Content-Type: image/gif
Last-Modified: Wed, 07 Jun 2006 19:38:24 GMT
Expires: Sun, 17 Jan 2038 19:14:07 GMT
Cache-Control: public
Date: Tue, 16 Sep 2008 09:45:42 GMT
Server: gws
Content-Length: 8558
Connection: Close

Connection closed by foreign host.

لاحظ أنه سيتعين عليك على الأرجح تزيين هذا الأسلوب الأساسي والسهل بالعديد من الأساليب الاستدلالية اعتمادًا على جنون مسؤول كل خادم ويب، حيث يمكن لكل منهم إرسال أي رؤوس يريدونها.إذا لم توفر رؤوس التخزين المؤقت (آخر تعديل، انتهاء الصلاحية، التحكم في ذاكرة التخزين المؤقت) أو طول المحتوى أو علامة etag، فستكون عالقًا في إعادة تنزيله للاختبار.

نصائح أخرى

قد يرسل خادم الويب آخر تعديل و/أو رأس etag لهذا الغرض.ويمكنك إرسال رأس if-modified-since في طلبك.

يرى http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.htmlالأقسام 14.19 و14.25 و14.29

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top