أكثر

احسب حقل التاريخ باستخدام سمة متغير التاريخ والوقت في فئة المعالم


لدي متغير سلسلة (fileDateString) بالتاريخ بهذا التنسيق: 20150404

في صفي المميز يوجد حقل نصي مع الوقت بتنسيق 24 ساعة بالتوقيت العالمي المنسق (UTC). هناك أيضًا مسافتان رئيسيتان قبل الوقت. على سبيل المثال "1300"

لقد أضفت حقل التاريخ إلى فئة الميزات الخاصة بي وأود حساب التاريخ / الوقت. أريد أيضًا أن أكون قادرًا على طرح 6 ساعات من التاريخ / الوقت (تحويل UTC إلى CST) للنتيجة النهائية.

فكرت أولاً في إنشاء حقل نصي مع التاريخ والوقت ، ثم تحويل ذلك إلى تاريخ ولكني أتساءل عما إذا كانت هناك طريقة أسهل؟

التعبير = "" "+ str (fileDateString) +"  "" + "! DateUTC!"

بناءً على المتطلبات التي وصفتها ، يجب أن يفعل تعبير Python التالي ما تبحث عنه:

"datetime.datetime.strptime ({} +! date1! .strip ()، '٪ Y٪ m٪ d٪ H٪ M') - datetime.timedelta (الساعات = 6)". تنسيق (repr (fileDateString))

ملاحظة: أفترض شهورًا قبل أيام في سلسلتك. إذا لم يتم تبديل٪ m و٪ d.


كيفية استخراج القيم من HTML & ltinput type = & ldquodate & rdquo & gt باستخدام jQuery

استخدام نوع إدخال HTML = "التاريخ" وزر الإرسال. أود ملء المتغيرات اليوم والشهر والسنة بالقيم المناسبة من إدخال التاريخ.

يخبرني خطأ وحدة التحكم أن .getDate () ليس وظيفة.

لقد رأيت أسئلة مماثلة لكن الحلول لم تنجح معي. كيف يمكنني استخراج اليوم والشهر والسنة من نوع الإدخال = "التاريخ"؟ شكرا


Java.time

يحل إطار java.time المدمج في Java 8 والإصدارات اللاحقة محل كلا من فئات التاريخ والوقت القديمة المجمعة مع الإصدارات الأولى من Java ومكتبة Joda-Time. تم إعادة نقل فئات java.time إلى Java 6 & amp 7 وإلى Android.

تمثل فئة Instant لحظة على الخط الزمني بالتوقيت العالمي المنسق بدقة نانوثانية.

قم بتطبيق offset-from-UTC (عدد الساعات والدقائق والثواني المحتملة) للحصول على OffsetDateTime.

والأفضل من ذلك هو تطبيق منطقة زمنية كاملة وهي تعويض بالإضافة إلى مجموعة من القواعد للتعامل مع الحالات الشاذة مثل التوقيت الصيفي (DST).


نظرًا لأن DateTime هو نوع قيمة لا يمكنك تعيينه فارغًا ، ولكن بالضبط لهذه الحالات (عدم وجود قيمة) تم تقديم Nullable & ltT & gt - استخدم DateTime عوضًا عن ذلك:

يعمل هذا عندما تحتاج إلى القيام بشيء ما كل X مقدار الوقت (نظرًا لأنك ستكون دائمًا فوق MinValue) ولكن يمكن أن يتسبب في الواقع في أخطاء دقيقة (مثل استخدام بعض العوامل بدون التحقق أولاً إذا لم تكن MinValue) إذا لم تكن حريصًا .

وهو أمر لطيف ويتجنب معظم المشكلات أثناء تقديم 1 أو 2 فقط.

يعتمد الأمر حقًا على ما تحاول تحقيقه.

يمكنك تعيين متغير DateTime ليكون "1/1/0001 00:00:00" ولكن لا يمكن أن يكون المتغير نفسه فارغًا. للحصول على MinTime استخدم:

قد ترغب في استخدام datetime لاغية. التاريخ والوقت؟ someDate = لا شيء

قد تجد أمثلة على أشخاص يستخدمون DateTime.Max أو DateTime.Min في مثل هذه الحالات ، لكنني أشك بشدة في رغبتك في القيام بذلك. إنه يؤدي إلى أخطاء ذات حالات حافة ، ورمز يصعب قراءته ، وما إلى ذلك.

الطريقة التي استخدمتها (AddWithValue) لا تقوم بتحويل القيم الخالية إلى قيم خالية في قاعدة البيانات. يجب عليك استخدام DBNull.Value بدلاً من ذلك:

سيؤدي هذا إلى تمرير قيمة someDate إذا لم تكن خالية ، أو DBNull. في هذه الحالة سيتم تمرير القيمة الصحيحة إلى قاعدة البيانات.

الخيار 1: استخدام DateTime لاغيا؟

الخيار 2: استخدم DateTime.MinValue

أنا شخصياً أفضل الخيار 1.

السلسلة هي تسلسل من الشخصيات. لذلك من المنطقي أن يكون لديك سلسلة فارغة ، وهي مجرد سلسلة فارغة من الأحرف.

لكن DateTime هو مجرد قيمة واحدة ، لذلك ليس من المنطقي التحدث عن DateTime "فارغ".

إذا كنت تريد تمثيل مفهوم "بلا قيمة" ، فسيتم تمثيل ذلك على أنه فارغ في .Net. وإذا كنت تريد استخدام ذلك مع أنواع القيم ، فأنت بحاجة إلى جعلها لاغية بشكل صريح. هذا يعني إما استخدام Nullable & ltDateTime & gt ، أو ما يعادله من DateTime؟ .

يحتوي DateTime (تمامًا مثل جميع أنواع القيم) أيضًا على ملف القيمة الافتراضية، يتم تعيينها لحقول غير مهيأة ويمكنك أيضًا الحصول عليها بواسطة DateTime () الجديد أو الافتراضي (DateTime). لكن ربما لا ترغب في استخدامه ، لأنه يمثل تاريخًا صالحًا: 1.1.0001 0:00:00.


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

ترجع الدالة PHP mktime () الطابع الزمني لنظام Unix للتاريخ. يحتوي الطابع الزمني لـ Unix على عدد الثواني بين عصر Unix (1 يناير 1970 00:00:00 بتوقيت جرينتش) والوقت المحدد.

بناء الجملة

يُنشئ المثال أدناه تاريخًا ووقتًا باستخدام الدالة date () من عدد من المعلمات في وظيفة mktime ():

مثال


احسب حقل التاريخ باستخدام سمة متغير التاريخ والوقت في فئة المعالم - أنظمة المعلومات الجغرافية

يحدد هذا القسم بناء الجملة ودلالات جميع حقول رأس HTTP / 1.1 القياسية. بالنسبة لحقول رأس الكيان ، يشير كل من المرسل والمستلم إلى العميل أو الخادم ، اعتمادًا على من يرسل الكيان ومن يستقبله.

14.1 القبول

يمكن استخدام حقل Accept request-header لتحديد أنواع وسائط معينة مقبولة للاستجابة. يمكن استخدام رؤوس قبول للإشارة إلى أن الطلب يقتصر على وجه التحديد على مجموعة صغيرة من الأنواع المرغوبة ، كما هو الحال في حالة طلب صورة مضمنة.

يجب أن يتم تفسيرها على أنها "أفضل الصوت / الأساسي ، ولكن أرسل لي أي نوع صوت إذا كان أفضل ما هو متاح بعد انخفاض جودة الصوت بنسبة 80٪."

إذا لم يكن هناك حقل قبول للرأس ، فمن المفترض أن العميل يقبل جميع أنواع الوسائط. إذا كان حقل رأس القبول موجودًا ، وإذا لم يتمكن الخادم من إرسال استجابة مقبولة وفقًا لقيمة حقل Accept المدمجة ، فيجب على الخادم إرسال استجابة 406 (غير مقبولة).

مثال أكثر تفصيلاً هو

شفهيًا ، سيتم تفسير ذلك على أنه "text / html و text / xc هما أنواع الوسائط المفضلة ، ولكن إذا لم تكن موجودة ، فأرسل كيان text / x-dvi ، وإذا لم يكن ذلك موجودًا ، فأرسل النص / عادي شخصية."

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

لها الأسبقية التالية:

يتم تحديد عامل جودة نوع الوسائط المرتبط بنوع معين من خلال البحث عن نطاق الوسائط بأعلى أولوية تطابق هذا النوع. على سبيل المثال،

قد يتسبب في إقران القيم التالية:

14.2 قبول-محارف

يمكن استخدام حقل Accept-Charset request-header للإشارة إلى مجموعات الأحرف المقبولة للاستجابة. يسمح هذا المجال للعملاء القادرين على فهم مجموعات الأحرف الأكثر شمولاً أو ذات الأغراض الخاصة للإشارة إلى تلك القدرة إلى خادم قادر على تمثيل المستندات في مجموعات الأحرف هذه.

يختبر الخادم ما إذا كان ترميز المحتوى مقبولاً ، وفقًا لحقل تشفير القبول ، باستخدام القواعد التالية:

في حالة وجود حقل Accept-Encoding في الطلب ، وإذا تعذر على الخادم إرسال استجابة مقبولة وفقًا لرأس Accept-Encoding ، فيجب على الخادم إرسال استجابة خطأ برمز الحالة 406 (غير مقبول).

في حالة عدم وجود حقل Accept-Encoding في الطلب ، قد يفترض الخادم أن العميل سيقبل أي ترميز للمحتوى. في هذه الحالة ، إذا كانت "الهوية" واحدة من ترميز المحتوى المتاح ، فيجب أن يستخدم الخادم ترميز المحتوى "الهوية" ، ما لم يكن لديه معلومات إضافية تفيد بأن ترميز محتوى مختلف مفيد للعميل.

14.4 قبول اللغة

يتشابه حقل "قبول اللغة - عنوان الطلب" مع "قبول" ، ولكنه يقيد مجموعة اللغات الطبيعية المفضلة كاستجابة للطلب. تم تعريف علامات اللغة في القسم 3.10.

يمكن إعطاء كل نطاق لغة قيمة جودة مرتبطة تمثل تقديرًا لتفضيل المستخدم للغات المحددة بواسطة هذا النطاق. القيمة الافتراضية للجودة هي "q = 1". على سبيل المثال،

قد يعني: "أفضل اللغة الدنماركية ، لكنني سأقبل الإنجليزية البريطانية وأنواع أخرى من اللغة الإنجليزية." يتطابق نطاق اللغة مع علامة اللغة إذا كانت تساوي العلامة تمامًا ، أو إذا كانت تساوي تمامًا بادئة العلامة بحيث يكون حرف العلامة الأول الذي يلي البادئة هو "-". النطاق الخاص "*" ، إذا كان موجودًا في حقل Accept-Language ، يطابق كل علامة غير مطابقة لأي نطاق آخر موجود في حقل Accept-Language.

عامل جودة اللغة المعين لعلامة اللغة بواسطة حقل قبول اللغة هو قيمة الجودة لأطول نطاق لغة في الحقل الذي يطابق علامة اللغة. إذا لم يتطابق أي نطاق لغة في الحقل مع العلامة ، فسيكون عامل جودة اللغة المعين هو 0. إذا لم يكن عنوان Accept-Language موجودًا في الطلب ، فإن الخادم

يجب أن نفترض أن جميع اللغات مقبولة على قدم المساواة. إذا كان عنوان Accept-Language موجودًا ، فإن جميع اللغات التي تم تعيين عامل جودة لها أكبر من 0 تكون مقبولة.

قد يكون الأمر مخالفًا لتوقعات الخصوصية للمستخدم لإرسال عنوان Accept-Language مع التفضيلات اللغوية الكاملة للمستخدم في كل طلب. لمناقشة هذه المسألة ، انظر القسم 15.1.4.

نظرًا لأن الوضوح يعتمد بشكل كبير على المستخدم الفردي ، فمن المستحسن أن تجعل تطبيقات العميل اختيار التفضيل اللغوي متاحًا للمستخدم. إذا لم يكن الاختيار متاحًا ، فيجب عدم تقديم حقل عنوان اللغة المقبولة في الطلب.

14.5 نطاقات القبول

14.6 العمر

14.7 سماح

14.8 التفويض

14.9 التحكم في ذاكرة التخزين المؤقت

يُستخدم حقل الرأس العام للتحكم في ذاكرة التخزين المؤقت لتحديد التوجيهات التي يجب أن تلتزم بها جميع آليات التخزين المؤقت على طول سلسلة الطلب / الاستجابة. تحدد التوجيهات السلوك المقصود منه منع ذاكرات التخزين المؤقت من التدخل السلبي في الطلب أو الاستجابة. تتجاوز هذه التوجيهات عادةً خوارزميات التخزين المؤقت الافتراضية. تكون توجيهات ذاكرة التخزين المؤقت أحادية الاتجاه حيث أن وجود توجيه في أحد الطلبات لا يعني أنه يجب تقديم نفس التوجيه في الاستجابة.

يجب أن يتم تمرير توجيهات ذاكرة التخزين المؤقت من خلال تطبيق وكيل أو بوابة ، بغض النظر عن أهميتها بالنسبة لهذا التطبيق ، نظرًا لأن التوجيهات قد تكون قابلة للتطبيق على جميع المستلمين على طول سلسلة الطلب / الاستجابة. لا يمكن تحديد توجيه ذاكرة تخزين مؤقت لذاكرة تخزين مؤقت معينة.

ستعمل ذاكرة التخزين المؤقت التي ترى حقل الرأس هذا بشكل صحيح حتى إذا لم تفهم ذاكرة التخزين المؤقت امتداد ذاكرة التخزين المؤقت للمجتمع ، لأنها سترى أيضًا التوجيه الخاص وتفهمه وبالتالي افتراضيًا للسلوك الآمن.

يجب تجاهل توجيهات ذاكرة التخزين المؤقت غير المعروفة ، حيث يُفترض أن أي توجيه ذاكرة تخزين مؤقت من المحتمل ألا يتم التعرف عليه بواسطة ذاكرة التخزين المؤقت HTTP / 1.1 سيتم دمجه مع التوجيهات القياسية (أو إمكانية التخزين المؤقت الافتراضية للاستجابة) بحيث يظل سلوك ذاكرة التخزين المؤقت صحيحًا إلى الحد الأدنى حتى إذا كان ذاكرة التخزين المؤقت لا تفهم الامتدادات (الامتدادات).

14.10 الاتصال

يسمح حقل العنوان العام للاتصال للمرسل بتحديد الخيارات المطلوبة لهذا الاتصال المعين ويجب ألا يتم توصيلها بواسطة الوكلاء عبر اتصالات أخرى.

يحتوي رأس الاتصال على القواعد النحوية التالية:

يجب على وكلاء HTTP / 1.1 تحليل حقل رأس الاتصال قبل إعادة توجيه الرسالة ، ولكل رمز اتصال مميز في هذا الحقل ، قم بإزالة أي حقل (حقول) رأس من الرسالة التي تحمل نفس اسم رمز الاتصال. تتم الإشارة إلى خيارات الاتصال من خلال وجود رمز اتصال في حقل رأس الاتصال ، وليس بواسطة أي حقل (حقول) رأس إضافية مقابلة ، حيث قد لا يتم إرسال حقل الرأس الإضافي إذا لم تكن هناك معلمات مرتبطة بخيار الاتصال هذا.

يجب ألا تتضمن رؤوس الرسائل المدرجة في رأس الاتصال رؤوس من طرف إلى طرف ، مثل التحكم في ذاكرة التخزين المؤقت.

يحدد HTTP / 1.1 خيار الاتصال "إغلاق" للمرسل للإشارة إلى أنه سيتم إغلاق الاتصال بعد اكتمال الاستجابة. على سبيل المثال،

في حقلي عنوان الطلب أو الاستجابة ، يشير إلى أنه لا ينبغي اعتبار الاتصال "ثابتًا" (القسم 8.1) بعد اكتمال الطلب / الاستجابة الحالية.

يجب أن تتضمن تطبيقات HTTP / 1.1 التي لا تدعم الاتصالات المستمرة خيار الاتصال "إغلاق" في كل رسالة.

يجب على النظام الذي يتلقى رسالة HTTP / 1.0 (أو إصدار أقل) يتضمن رأس اتصال ، بالنسبة لكل رمز اتصال مميز في هذا الحقل ، إزالة وتجاهل أي حقل (حقول) رأس من الرسالة التي تحمل نفس اسم الاتصال- رمز. هذا يحمي من إعادة التوجيه الخاطئ لمثل هذه الحقول عن طريق وكلاء قبل HTTP / 1.1. انظر القسم 19.6.2.

14.11 ترميز المحتوى

يتم استخدام حقل رأس الكيان ترميز المحتوى كمعدِّل لنوع الوسائط. عند وجودها ، تشير قيمتها إلى ترميز المحتوى الإضافي الذي تم تطبيقه على جسم الكيان ، وبالتالي ما هي آليات فك التشفير التي يجب تطبيقها من أجل الحصول على نوع الوسائط المشار إليه بواسطة حقل رأس نوع المحتوى. يستخدم ترميز المحتوى بشكل أساسي للسماح بضغط المستند دون فقدان هوية نوع الوسائط الأساسي.

تم تعريف ترميز المحتوى في القسم 3.5. مثال على استخدامه هو

يعد ترميز المحتوى سمة مميزة للكيان الذي تم تحديده بواسطة Request-URI. عادةً ما يتم تخزين جسم الكيان بهذا الترميز ولا يتم فك تشفيره إلا قبل التقديم أو الاستخدام المماثل. ومع ذلك ، يجوز للوكيل غير الشفاف تعديل ترميز المحتوى إذا كان من المعروف أن الترميز الجديد مقبول للمستلم ، ما لم يكن توجيه التحكم في ذاكرة التخزين المؤقت "no-convert" موجودًا في الرسالة.

إذا لم يكن ترميز المحتوى لكيان ما "هوية" ، فيجب أن تتضمن الاستجابة رأس كيان ترميز المحتوى (القسم 14.11) الذي يسرد ترميز (رموز) المحتوى غير الهوية المستخدمة.

إذا كان ترميز المحتوى لكيان في رسالة طلب غير مقبول للخادم الأصلي ، فيجب أن يستجيب الخادم برمز الحالة 415 (نوع الوسائط غير المدعوم).

إذا تم تطبيق ترميزات متعددة على كيان ما ، فيجب أن يتم سرد ترميز المحتوى بالترتيب الذي تم تطبيقه به. قد يتم توفير معلومات إضافية حول معلمات الترميز بواسطة حقول رأس الكيان الأخرى غير المحددة بواسطة هذه المواصفات.

14.12 لغة المحتوى

يصف حقل رأس الكيان-لغة المحتوى اللغة (اللغات) الطبيعية للجمهور المستهدف للكيان المضمن. لاحظ أن هذا قد لا يكون مكافئًا لجميع اللغات المستخدمة داخل الكيان-الجسم.

تم تعريف علامات اللغة في القسم 3.10. الغرض الأساسي من لغة المحتوى هو السماح للمستخدم بتحديد الكيانات والتمييز بينها وفقًا للغة المفضلة للمستخدم. وبالتالي ، إذا كان محتوى الجسم مخصصًا فقط لجمهور الدنماركيين المتعلمين ، فإن الحقل المناسب هو

إذا لم يتم تحديد لغة المحتوى ، فسيكون الوضع الافتراضي هو أن المحتوى مخصص لجميع مستمعي اللغة. قد يعني هذا أن المرسل لا يعتبرها خاصة بأي لغة طبيعية ، أو أن المرسل لا يعرف اللغة المقصود بها.

قد يتم سرد لغات متعددة للمحتوى المخصص لجماهير متعددة. على سبيل المثال ، قد يتطلب تسليم "معاهدة وايتانغي" ، المقدمة في وقت واحد في النسختين الأصليتين من الماوري والإنجليزية ،

ومع ذلك ، لمجرد وجود لغات متعددة داخل كيان ما لا يعني أنها مخصصة لجماهير لغوية متعددة. من الأمثلة على ذلك كتاب تمهيدي للغة للمبتدئين ، مثل "درس أول باللاتينية" ، والذي من الواضح أنه يُقصد به أن يستخدمه جمهور يتقن اللغة الإنجليزية. في هذه الحالة ، ستشمل لغة المحتوى بشكل صحيح فقط "en".

يمكن تطبيق لغة المحتوى على أي نوع وسائط - لا يقتصر الأمر على المستندات النصية.

14.13 طول المحتوى

يشير حقل رأس الكيان بطول المحتوى إلى حجم نص الكيان ، بالعدد العشري من OCTETs ، الذي تم إرساله إلى المستلم أو ، في حالة طريقة HEAD ، كان حجم نص الكيان الذي تم إرساله كان الطلب على GET.

يجب على التطبيقات استخدام هذا الحقل للإشارة إلى طول نقل نص الرسالة ، ما لم يكن ذلك محظورًا بموجب القواعد الواردة في القسم 4.4.

أي طول محتوى أكبر من أو يساوي الصفر هو قيمة صالحة. يصف القسم 4.4 كيفية تحديد طول نص الرسالة إذا لم يتم توفير طول المحتوى.

لاحظ أن معنى هذا الحقل يختلف اختلافًا كبيرًا عن التعريف المقابل في MIME ، حيث يكون حقلاً اختياريًا يُستخدم ضمن نوع المحتوى "الرسالة / الجسم الخارجي". في HTTP ، يجب إرسالها متى أمكن تحديد طول الرسالة قبل نقلها ، ما لم يكن ذلك محظورًا بموجب القواعد الواردة في القسم 4.4.

14.14 موقع المحتوى

يجوز استخدام حقل رأس الكيان موقع المحتوى لتوفير موقع المورد للكيان المضمن في الرسالة عندما يكون هذا الكيان متاحًا للوصول من موقع منفصل عن URI للمورد المطلوب. يجب أن يوفر الخادم موقعًا للمحتوى للمتغير المقابل لكيان الاستجابة خاصة في الحالة التي يكون فيها للمورد كيانات متعددة مرتبطة به ، وهذه الكيانات لديها بالفعل مواقع منفصلة يمكن الوصول إليها بشكل فردي ، يجب أن يوفر الخادم موقع المحتوى للمتغير المعين الذي يتم إرجاعه.

تحدد قيمة Content-Location أيضًا URI الأساسي للكيان.

لا تعد قيمة موقع المحتوى بديلاً لمعرّف الموارد المنتظم (URI) الأصلي المطلوب ، إنها مجرد بيان بموقع المورد المطابق لهذا الكيان المحدد في وقت الطلب. قد تحدد الطلبات المستقبلية URI Content-Location باعتباره عنوان URI للطلب إذا كانت الرغبة هي تحديد مصدر ذلك الكيان المعين.

لا يمكن لذاكرة التخزين المؤقت أن تفترض أن كيانًا له موقع محتوى مختلف عن URI المستخدم لاسترداده يمكن استخدامه للرد على الطلبات اللاحقة على Content-Location URI. ومع ذلك ، يمكن استخدام موقع المحتوى للتمييز بين الكيانات المتعددة التي تم استردادها من مورد واحد مطلوب ، كما هو موضح في القسم 13.6.

إذا كان Content-Location هو URI نسبيًا ، فسيتم تفسير URI النسبي بالنسبة إلى Request-URI.

معنى رأس موقع المحتوى في طلبات PUT أو POST هو أن الخوادم غير محددة بحرية في تجاهلها في تلك الحالات.

14.15 المحتوى- MD5

حقل رأس الكيان Content-MD5 ، كما هو محدد في RFC 1864 [23] ، هو ملخص MD5 لكيان-جسم لغرض توفير فحص سلامة الرسالة من طرف إلى طرف (MIC) لكيان-نص. (ملاحظة: يعد MIC مفيدًا لاكتشاف التعديل العرضي لجسم الكيان أثناء النقل ، ولكنه ليس دليلًا ضد الهجمات الضارة.)

قد يتم إنشاء حقل رأس Content-MD5 بواسطة خادم أو عميل أصلي ليعمل كتحقق من سلامة نص الكيان. يمكن فقط للخوادم الأصلية أو العملاء إنشاء وكلاء مجال رأس Content-MD5 ويجب ألا تنشئها البوابات ، لأن هذا من شأنه أن يفقد قيمتها كتحقق شامل من التكامل. يجوز لأي مستلم للكيان - الجسم ، بما في ذلك البوابات والوكلاء ، التحقق من أن قيمة الملخص في حقل الرأس هذا تتطابق مع قيمة نص الكيان كما تم استلامه.

يتم حساب ملخص MD5 استنادًا إلى محتوى نص الكيان ، بما في ذلك أي ترميز للمحتوى تم تطبيقه ، ولكن لا يشمل أي ترميز نقل مطبق على نص الرسالة. إذا تم استلام الرسالة مع ترميز النقل ، فيجب إزالة هذا الترميز قبل التحقق من قيمة Content-MD5 مقابل الكيان المستلم.

ينتج عن هذا أن الملخص يتم حسابه على ثماني بتات من جسم الكيان تمامًا ، وبترتيب إرسالها إذا لم يتم تطبيق ترميز النقل.

يقوم HTTP بتمديد RFC 1864 للسماح بحساب الملخص لأنواع الوسائط المركبة MIME (على سبيل المثال ، متعدد الأجزاء / * ورسالة / rfc822) ، ولكن هذا لا يغير كيفية حساب الملخص كما هو محدد في الفقرة السابقة.

هناك العديد من النتائج المترتبة على ذلك. قد يحتوي جسم الكيان للأنواع المركبة على العديد من أجزاء الجسم ، ولكل منها رؤوس MIME و HTTP الخاصة بها (بما في ذلك رؤوس Content-MD5 و Content-Transfer-Encoding و Content-Encoding). إذا كان جزء من الجسم يحتوي على رأس Content-Transfer- Encoding أو Content-Encoding ، فمن المفترض أن محتوى الجزء من الجسم قد تم تطبيق الترميز عليه ، وأن جزء الجسم مضمّن في Content-MD5 الموجز كما هو - أي بعد التطبيق. غير مسموح بحقل عنوان ترميز النقل داخل أجزاء الجسم.

يجب عدم تحويل جميع فواصل الأسطر إلى CRLF قبل الحساب أو التحقق من الملخص: يجب ترك اصطلاح فاصل الأسطر المستخدم في النص الذي تم إرساله فعليًا دون تغيير عند حساب الملخص.

14.16 نطاق المحتوى

يتم إرسال رأس الكيان-نطاق المحتوى مع جزء-جسم-كيان لتحديد المكان الذي يجب تطبيق النص الجزئي فيه في نص الكيان الكامل. يتم تحديد وحدات النطاق في القسم 3.12.

يجب أن يشير العنوان إلى الطول الإجمالي لكيان-جسم كامل ، ما لم يكن هذا الطول غير معروف أو يصعب تحديده. تعني علامة النجمة "*" أن طول المثيل غير معروف في وقت إنشاء الاستجابة.

بخلاف قيم محددات نطاقات البايت (انظر القسم 14.35.1) ، يجب أن تحدد مواصفات نطاق البايت نطاقًا واحدًا فقط ، ويجب أن تحتوي على مواضع بايت مطلقة لكل من البايتين الأول والأخير من النطاق.

مواصفات نطاق محتوى البايت مع مواصفات نطاق البايت الذي تكون قيمة موضع البايت الأخير أقل من قيمة موضع البايت الأول ، أو التي تكون قيمة طول المثيل أقل من أو تساوي آخر- قيمة موضع البايت غير صالحة. يجب على مستلم نطاق محتوى بايت غير صالح تجاهله وأي محتوى يتم نقله معه.

يجب أن يتضمن الخادم الذي يرسل استجابة برمز الحالة 416 (النطاق المطلوب غير مُرضٍ) حقل نطاق المحتوى مع مواصفات مدى البايت "*". يحدد طول المثيل الطول الحالي لـ

المورد المحدد. يجب ألا تتضمن الاستجابة برمز الحالة 206 (المحتوى الجزئي) حقل نطاق المحتوى مع مواصفات تحديد نطاق البايت "*".

أمثلة على قيم مواصفات نطاق محتوى البايت ، بافتراض أن الكيان يحتوي على إجمالي 1234 بايت:

عندما تتضمن رسالة HTTP محتوى نطاق واحد (على سبيل المثال ، استجابة لطلب نطاق واحد ، أو طلب لمجموعة من النطاقات التي تتداخل بدون أي ثغرات) ، يتم إرسال هذا المحتوى باستخدام نطاق المحتوى header ورأس طول المحتوى يوضح عدد البايت المنقولة بالفعل. على سبيل المثال،

عندما تتضمن رسالة HTTP محتوى نطاقات متعددة (على سبيل المثال ، استجابة لطلب نطاقات متعددة غير متداخلة) ، يتم إرسالها كرسالة متعددة الأجزاء. نوع الوسائط متعدد الأجزاء المستخدم لهذا الغرض هو "متعدد الأجزاء / نطاقات ثنائية" على النحو المحدد في التذييل 19.2. انظر الملحق 19.6.3 لمشكلة التوافق.

يجب عدم إرسال استجابة لطلب نطاق واحد باستخدام نوع الوسائط متعدد الأجزاء / البايتانجات. قد يتم إرسال استجابة لطلب نطاقات متعددة ، والتي تكون نتيجتها نطاقًا واحدًا ، كنوع وسائط متعدد الأجزاء / نطاقات ثنائية بجزء واحد. يجب ألا يطلب العميل الذي لا يمكنه فك شفرة رسالة متعددة الأجزاء / نطاقات بايت متعددة في طلب واحد.

عندما يطلب عميل نطاقات بايت متعددة في طلب واحد ، يجب على الخادم إعادتها بالترتيب الذي ظهرت به في الطلب.

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

إذا تلقى الخادم طلبًا (بخلاف طلب يشتمل على حقل عنوان الطلب If- Range) مع حقل عنوان طلب النطاق غير قابل للإرضاء (أي أن جميع قيم مواصفات نطاق البايت التي تحتوي على قيمة نقطة أول بايت أكبر من الطول الحالي للمورد المحدد) ، يجب أن يُرجع رمز استجابة 416 (النطاق المطلوب غير كافٍ) (القسم 10.4.17).

14.17 نوع المحتوى

يشير حقل رأس الكيان نوع المحتوى إلى نوع وسائط جسم الكيان المرسل إلى المستلم أو ، في حالة أسلوب HEAD ، نوع الوسائط التي كان من الممكن إرسالها لو كان الطلب من نوع GET.

يتم تحديد أنواع الوسائط في القسم 3.7. مثال على هذا المجال

يتم توفير مزيد من المناقشة حول طرق تحديد نوع الوسائط للكيان في القسم 7.2.1.

14.18 التاريخ

يمثل حقل العنوان العام للتاريخ التاريخ والوقت الذي تم فيه إنشاء الرسالة ، مع وجود نفس الدلالات كتاريخ إنشاء في RFC 822. قيمة الحقل هي تاريخ HTTP ، كما هو موضح في القسم 3.3.1 يجب إرسالها في RFC 1123 [8] - تنسيق التاريخ.

يجب أن تتضمن خوادم المنشأ حقل رأس التاريخ في جميع الردود ، باستثناء الحالات التالية:

يجب تعيين رسالة مستلمة لا تحتوي على حقل عنوان التاريخ واحدًا من قبل المستلم إذا كان سيتم تخزين الرسالة مؤقتًا بواسطة هذا المستلم أو يتم نقلها عبر بروتوكول يتطلب تاريخًا. يجب ألا يخزن تنفيذ HTTP بدون ساعة الاستجابات مؤقتًا دون إعادة التحقق منها عند كل استخدام. يجب أن تستخدم ذاكرة التخزين المؤقت لـ HTTP ، وخاصة ذاكرة التخزين المؤقت المشتركة ، آلية ، مثل NTP [28] ، لمزامنة ساعتها مع معيار خارجي موثوق.

يجب على العملاء إرسال حقل عنوان التاريخ فقط في الرسائل التي تتضمن كيانًا - النص ، كما هو الحال في طلبات PUT و POST ، وحتى في هذه الحالة يكون ذلك اختياريًا. يجب ألا يرسل العميل بدون ساعة حقل رأس التاريخ في الطلب.

يجب ألا يمثل تاريخ HTTP الذي تم إرساله في رأس "التاريخ" التاريخ والوقت اللاحقين لإنشاء الرسالة. يجب أن يمثل أفضل تقدير تقريبي متاح لتاريخ ووقت إنشاء الرسالة ، ما لم يكن للتنفيذ أي وسيلة لتوليد تاريخ ووقت دقيقين بشكل معقول. من الناحية النظرية ، يجب أن يمثل التاريخ اللحظة التي تسبق إنشاء الكيان مباشرةً. من الناحية العملية ، يمكن إنشاء التاريخ في أي وقت أثناء إنشاء الرسالة دون التأثير على قيمتها الدلالية.

14.18.1 تشغيل خادم المنشأ بدون ساعات

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

14.19 ETag

يوفر حقل رأس استجابة ETag القيمة الحالية لعلامة الكيان للمتغير المطلوب. تم وصف الرؤوس المستخدمة مع علامات الكيان في الأقسام 14.24 و 14.26 و 14.44. يجوز استخدام علامة الكيان للمقارنة مع الكيانات الأخرى من نفس المورد (انظر القسم 13.3.3).

14.20 توقع

يتم استخدام حقل توقع عنوان الطلب للإشارة إلى أن سلوكيات خادم معينة مطلوبة من قبل العميل.

يجب أن يتعامل عملاء وذاكرة التخزين المؤقت HTTP / 1.1 مع تنسيقات التاريخ الأخرى غير الصالحة ، لا سيما بما في ذلك القيمة "0" ، كما في الماضي (على سبيل المثال ، "انتهت صلاحيته بالفعل").

لوضع علامة على استجابة بأنها "منتهية الصلاحية بالفعل" ، يرسل الخادم الأصلي تاريخ انتهاء الصلاحية يساوي قيمة رأس التاريخ. (راجع قواعد حسابات انتهاء الصلاحية في القسم 13.2.4.)

لوضع علامة "لا تنتهي الصلاحية أبدًا" على استجابة ، يرسل الخادم الأصلي تاريخ انتهاء الصلاحية تقريبًا عام واحد من وقت إرسال الاستجابة. يجب ألا ترسل خوادم HTTP / 1.1 تواريخ انتهاء الصلاحية لأكثر من عام في المستقبل.

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

14.22 من

يجب أن يحتوي الحقل من عنوان الطلب ، إذا تم توفيره ، على عنوان بريد إلكتروني عبر الإنترنت للمستخدم البشري الذي يتحكم في وكيل المستخدم الطالب. يجب أن يكون العنوان قابلاً للاستخدام آليًا ، كما هو محدد بواسطة "صندوق البريد" في RFC 822 [9] كما تم تحديثه بواسطة RFC 1123 [8]:

يمكن استخدام حقل الرأس هذا لأغراض التسجيل وكوسيلة لتحديد مصدر الطلبات غير الصالحة أو غير المرغوب فيها. يجب عدم استخدامه كشكل غير آمن لحماية الوصول. تفسير هذا الحقل هو أن الطلب يتم تنفيذه نيابة عن الشخص المعطى ، الذي يقبل المسؤولية عن الطريقة المنفذة. على وجه الخصوص ، يجب على وكلاء الروبوت تضمين هذا الرأس بحيث يمكن الاتصال بالشخص المسؤول عن تشغيل الروبوت في حالة حدوث مشكلات في الطرف المستقبل.

قد يكون عنوان البريد الإلكتروني على الإنترنت في هذا الحقل منفصلاً عن مضيف الإنترنت الذي أصدر الطلب. على سبيل المثال ، عند تمرير طلب عبر وكيل ، يجب استخدام عنوان المُصدر الأصلي.

يجب ألا يرسل العميل حقل الرأس "من" دون موافقة المستخدم ، لأنه قد يتعارض مع اهتمامات خصوصية المستخدم أو سياسة أمان موقعه. يوصى بشدة أن يكون المستخدم قادرًا على تعطيل وتمكين وتعديل قيمة هذا الحقل في أي وقت قبل الطلب.

14.23 المضيف

يحدد حقل عنوان طلب المضيف مضيف الإنترنت ورقم المنفذ للمورد المطلوب ، كما تم الحصول عليه من URI الأصلي الذي قدمه المستخدم أو المورد المرجعي (بشكل عام عنوان HTTP URL ،

كما هو موضح في القسم 3.2.2). يجب أن تمثل قيمة حقل المضيف سلطة التسمية للخادم الأصلي أو البوابة التي يقدمها عنوان URL الأصلي. يسمح هذا للخادم الأصلي أو البوابة بالتمييز بين عناوين URL الغامضة داخليًا ، مثل عنوان URL الجذر "/" لخادم لأسماء مضيف متعددة على عنوان IP واحد.

يشير "المضيف" بدون أي معلومات عن المنفذ اللاحق إلى المنفذ الافتراضي للخدمة المطلوبة (على سبيل المثال ، "80" لعنوان HTTP URL). على سبيل المثال ، طلب على الخادم الأصلي لـ & lthttp: //www.w3.org/pub/WWW/> سيشمل بشكل صحيح:

يجب على العميل تضمين حقل رأس المضيف في جميع رسائل طلب HTTP / 1.1. إذا كان URI المطلوب لا يتضمن اسم مضيف الإنترنت للخدمة المطلوبة ، فيجب إعطاء حقل رأس المضيف بقيمة فارغة. يجب أن يضمن وكيل HTTP / 1.1 أن أي رسالة طلب يقوم بإعادة توجيهها تحتوي على حقل عنوان مضيف مناسب يحدد الخدمة التي يطلبها الوكيل. يجب أن تستجيب جميع خوادم HTTP / 1.1 المستندة إلى الإنترنت برمز حالة 400 (طلب غير صالح) لأي رسالة طلب HTTP / 1.1 تفتقر إلى حقل رأس المضيف.

راجع القسمين 5.2 و 19.6.1.1 للتعرف على المتطلبات الأخرى المتعلقة بالمضيف.

14.24 مباراة إذا كانت المباراة

يتم استخدام حقل عنوان الطلب If-Match مع طريقة لجعلها مشروطة. يمكن للعميل الذي لديه كيان واحد أو أكثر تم الحصول عليه مسبقًا من المورد التحقق من أن أحد هذه الكيانات حديث من خلال تضمين قائمة بعلامات الكيانات المرتبطة بها في حقل عنوان If-Match. يتم تعريف علامات الكيان في القسم 3.11. الغرض من هذه الميزة هو السماح بالتحديثات الفعالة للمعلومات المخزنة مؤقتًا بأقل قدر من النفقات العامة للمعاملة. يتم استخدامه أيضًا ، عند تحديث الطلبات ، لمنع التعديل غير المقصود للإصدار الخاطئ من المورد. كحالة خاصة ، تطابق القيمة "*" أي كيان حالي للمورد.

إذا كانت أي من علامات الكيان تتطابق مع علامة الكيان الخاصة بالكيان التي كان من الممكن أن يتم إرجاعها استجابة لطلب GET مشابه (بدون رأس If-Match) على هذا المورد ، أو إذا تم تقديم "*"

وأي كيان حالي موجود لهذا المورد ، فقد ينفذ الخادم الطريقة المطلوبة كما لو لم يكن حقل عنوان If-Match موجودًا.

A server MUST use the strong comparison function (see section 13.3.3) to compare the entity tags in If-Match.

If none of the entity tags match, or if "*" is given and no current entity exists, the server MUST NOT perform the requested method, and MUST return a 412 (Precondition Failed) response. This behavior is most useful when the client wants to prevent an updating method, such as PUT, from modifying a resource that has changed since the client last retrieved it.

If the request would, without the If-Match header field, result in anything other than a 2xx or 412 status, then the If-Match header MUST be ignored.

The meaning of "If-Match: *" is that the method SHOULD be performed if the representation selected by the origin server (or by a cache, possibly using the Vary mechanism, see section 14.44) exists, and MUST NOT be performed if the representation does not exist.

A request intended to update a resource (e.g., a PUT) MAY include an If-Match header field to signal that the request method MUST NOT be applied if the entity corresponding to the If-Match value (a single entity tag) is no longer a representation of that resource. This allows the user to indicate that they do not wish the request to be successful if the resource has been changed without their knowledge. أمثلة:

The result of a request having both an If-Match header field and either an If-None-Match or an If-Modified-Since header fields is undefined by this specification.

14.25 If-Modified-Since

The If-Modified-Since request-header field is used with a method to make it conditional: if the requested variant has not been modified since the time specified in this field, an entity will not be returned from the server instead, a 304 (not modified) response will be returned without any message-body.

An example of the field is:

A GET method with an If-Modified-Since header and no Range header requests that the identified entity be transferred only if it has been modified since the date given by the If-Modified-Since header. The algorithm for determining this includes the following cases:

The purpose of this feature is to allow efficient updates of cached information with a minimum amount of transaction overhead.

The result of a request having both an If-Modified-Since header field and either an If-Match or an If-Unmodified-Since header fields is undefined by this specification.

14.26 If-None-Match

The If-None-Match request-header field is used with a method to make it conditional. A client that has one or more entities previously obtained from the resource can verify that none of those entities is current by including a list of their associated entity tags in the If-None-Match header field. The purpose of this feature is to allow efficient updates of cached information with a minimum amount of transaction overhead. It is also used to prevent a method (e.g. PUT) from inadvertently modifying an existing resource when the client believes that the resource does not exist.

As a special case, the value "*" matches any current entity of the resource.

If any of the entity tags match the entity tag of the entity that would have been returned in the response to a similar GET request (without the If-None-Match header) on that resource, or if "*" is given and any current entity exists for that resource, then the server MUST NOT perform the requested method, unless required to do so because the resource's modification date fails to match that supplied in an If-Modified-Since header field in the request. Instead, if the request method was GET or HEAD, the server SHOULD respond with a 304 (Not Modified) response, including the cache- related header fields (particularly ETag) of one of the entities that matched. For all other request methods, the server MUST respond with a status of 412 (Precondition Failed).

See section 13.3.3 for rules on how to determine if two entities tags match. The weak comparison function can only be used with GET or HEAD requests.

If none of the entity tags match, then the server MAY perform the requested method as if the If-None-Match header field did not exist, but MUST also ignore any If-Modified-Since header field(s) in the request. That is, if no entity tags match, then the server MUST NOT return a 304 (Not Modified) response.

If the request would, without the If-None-Match header field, result in anything other than a 2xx or 304 status, then the If-None-Match header MUST be ignored. (See section 13.3.4 for a discussion of server behavior when both If-Modified-Since and If-None-Match appear in the same request.)

The meaning of "If-None-Match: *" is that the method MUST NOT be performed if the representation selected by the origin server (or by a cache, possibly using the Vary mechanism, see section 14.44) exists, and SHOULD be performed if the representation does not exist. This feature is intended to be useful in preventing races between PUT operations.

The result of a request having both an If-None-Match header field and either an If-Match or an If-Unmodified-Since header fields is undefined by this specification.

14.27 If-Range

If a client has a partial copy of an entity in its cache, and wishes to have an up-to-date copy of the entire entity in its cache, it could use the Range request-header with a conditional GET (using either or both of If-Unmodified-Since and If-Match.) However, if the condition fails because the entity has been modified, the client would then have to make a second request to obtain the entire current entity-body.

The If-Range header allows a client to "short-circuit" the second request. Informally, its meaning is `if the entity is unchanged, send me the part(s) that I am missing otherwise, send me the entire new entity'.

If the client has no entity tag for an entity, but does have a Last- Modified date, it MAY use that date in an If-Range header. (The server can distinguish between a valid HTTP-date and any form of entity-tag by examining no more than two characters.) The If-Range header SHOULD only be used together with a Range header, and MUST be ignored if the request does not include a Range header, or if the server does not support the sub-range operation.

If the entity tag given in the If-Range header matches the current entity tag for the entity, then the server SHOULD provide the specified sub-range of the entity using a 206 (Partial content) response. If the entity tag does not match, then the server SHOULD return the entire entity using a 200 (OK) response.

14.28 If-Unmodified-Since

The If-Unmodified-Since request-header field is used with a method to make it conditional. If the requested resource has not been modified since the time specified in this field, the server SHOULD perform the requested operation as if the If-Unmodified-Since header were not present.

If the requested variant has been modified since the specified time, the server MUST NOT perform the requested operation, and MUST return a 412 (Precondition Failed).

An example of the field is:

If the request normally (i.e., without the If-Unmodified-Since header) would result in anything other than a 2xx or 412 status, the If-Unmodified-Since header SHOULD be ignored.

If the specified date is invalid, the header is ignored.

The result of a request having both an If-Unmodified-Since header field and either an If-None-Match or an If-Modified-Since header fields is undefined by this specification.

14.29 Last-Modified

The Last-Modified entity-header field indicates the date and time at which the origin server believes the variant was last modified.

The exact meaning of this header field depends on the implementation of the origin server and the nature of the original resource. For files, it may be just the file system last-modified time. For entities with dynamically included parts, it may be the most recent of the set of last-modify times for its component parts. For database gateways, it may be the last-update time stamp of the record. For virtual objects, it may be the last time the internal state changed.

An origin server MUST NOT send a Last-Modified date which is later than the server's time of message origination. In such cases, where the resource's last modification would indicate some time in the future, the server MUST replace that date with the message origination date.

An origin server SHOULD obtain the Last-Modified value of the entity as close as possible to the time that it generates the Date value of its response. This allows a recipient to make an accurate assessment of the entity's modification time, especially if the entity changes near the time that the response is generated.

HTTP/1.1 servers SHOULD send Last-Modified whenever feasible.

14.30 Location

The Location response-header field is used to redirect the recipient to a location other than the Request-URI for completion of the request or identification of a new resource. For 201 (Created) responses, the Location is that of the new resource which was created by the request. For 3xx responses, the location SHOULD indicate the server's preferred URI for automatic redirection to the resource. The field value consists of a single absolute URI.

14.31 Max-Forwards

The Max-Forwards request-header field provides a mechanism with the TRACE (section 9.8) and OPTIONS (section 9.2) methods to limit the number of proxies or gateways that can forward the request to the next inbound server. This can be useful when the client is attempting to trace a request chain which appears to be failing or looping in mid-chain.

The Max-Forwards value is a decimal integer indicating the remaining number of times this request message may be forwarded.

Each proxy or gateway recipient of a TRACE or OPTIONS request containing a Max-Forwards header field MUST check and update its value prior to forwarding the request. If the received value is zero (0), the recipient MUST NOT forward the request instead, it MUST respond as the final recipient. If the received Max-Forwards value is greater than zero, then the forwarded message MUST contain an updated Max-Forwards field with a value decremented by one (1).

The Max-Forwards header field MAY be ignored for all other methods defined by this specification and for any extension methods for which it is not explicitly referred to as part of that method definition.

14.32 Pragma

The Pragma general-header field is used to include implementation- specific directives that might apply to any recipient along the request/response chain. All pragma directives specify optional behavior from the viewpoint of the protocol however, some systems MAY require that behavior be consistent with the directives.

14.33 Proxy-Authenticate

The Proxy-Authenticate response-header field MUST be included as part of a 407 (Proxy Authentication Required) response. The field value consists of a challenge that indicates the authentication scheme and parameters applicable to the proxy for this Request-URI.

The HTTP access authentication process is described in "HTTP Authentication: Basic and Digest Access Authentication" [43]. Unlike WWW-Authenticate, the Proxy-Authenticate header field applies only to the current connection and SHOULD NOT be passed on to downstream clients. However, an intermediate proxy might need to obtain its own credentials by requesting them from the downstream client, which in some circumstances will appear as if the proxy is forwarding the Proxy-Authenticate header field.

14.34 Proxy-Authorization

The Proxy-Authorization request-header field allows the client to identify itself (or its user) to a proxy which requires authentication. The Proxy-Authorization field value consists of credentials containing the authentication information of the user agent for the proxy and/or realm of the resource being requested.

The HTTP access authentication process is described in "HTTP Authentication: Basic and Digest Access Authentication" [43] . Unlike Authorization, the Proxy-Authorization header field applies only to the next outbound proxy that demanded authentication using the Proxy- Authenticate field. When multiple proxies are used in a chain, the

Proxy-Authorization header field is consumed by the first outbound proxy that was expecting to receive credentials. A proxy MAY relay the credentials from the client request to the next proxy if that is the mechanism by which the proxies cooperatively authenticate a given request.

14.35 Range

14.35.1 Byte Ranges

Since all HTTP entities are represented in HTTP messages as sequences of bytes, the concept of a byte range is meaningful for any HTTP entity. (However, not all clients and servers need to support byte- range operations.)

Byte range specifications in HTTP apply to the sequence of bytes in the entity-body (not necessarily the same as the message-body).

A byte range operation MAY specify a single range of bytes, or a set of ranges within a single entity.

The first-byte-pos value in a byte-range-spec gives the byte-offset of the first byte in a range. The last-byte-pos value gives the byte-offset of the last byte in the range that is, the byte positions specified are inclusive. Byte offsets start at zero.

If the last-byte-pos value is present, it MUST be greater than or equal to the first-byte-pos in that byte-range-spec, or the byte- range-spec is syntactically invalid. The recipient of a byte-range- set that includes one or more syntactically invalid byte-range-spec values MUST ignore the header field that includes that byte-range- set.

If the last-byte-pos value is absent, or if the value is greater than or equal to the current length of the entity-body, last-byte-pos is taken to be equal to one less than the current length of the entity- body in bytes.

By its choice of last-byte-pos, a client can limit the number of bytes retrieved without knowing the size of the entity.

A suffix-byte-range-spec is used to specify the suffix of the entity-body, of a length given by the suffix-length value. (That is, this form specifies the last N bytes of an entity-body.) If the entity is shorter than the specified suffix-length, the entire entity-body is used.

If a syntactically valid byte-range-set includes at least one byte- range-spec whose first-byte-pos is less than the current length of the entity-body, or at least one suffix-byte-range-spec with a non- zero suffix-length, then the byte-range-set is satisfiable. Otherwise, the byte-range-set is unsatisfiable. If the byte-range-set is unsatisfiable, the server SHOULD return a response with a status of 416 (Requested range not satisfiable). Otherwise, the server SHOULD return a response with a status of 206 (Partial Content) containing the satisfiable ranges of the entity-body.

Examples of byte-ranges-specifier values (assuming an entity-body of length 10000):

14.35.2 Range Retrieval Requests

HTTP retrieval requests using conditional or unconditional GET methods MAY request one or more sub-ranges of the entity, instead of the entire entity, using the Range request header, which applies to the entity returned as the result of the request:

A server MAY ignore the Range header. However, HTTP/1.1 origin servers and intermediate caches ought to support byte ranges when possible, since Range supports efficient recovery from partially failed transfers, and supports efficient partial retrieval of large entities.

If the server supports the Range header and the specified range or ranges are appropriate for the entity:

In some cases, it might be more appropriate to use the If-Range header (see section 14.27) in addition to the Range header.

If a proxy that supports ranges receives a Range request, forwards the request to an inbound server, and receives an entire entity in reply, it SHOULD only return the requested range to its client. It SHOULD store the entire received response in its cache if that is consistent with its cache allocation policies.

14.36 Referer

The Referer[sic] request-header field allows the client to specify, for the server's benefit, the address (URI) of the resource from which the Request-URI was obtained (the "referrer", although the header field is misspelled.) The Referer request-header allows a server to generate lists of back-links to resources for interest, logging, optimized caching, etc. It also allows obsolete or mistyped links to be traced for maintenance. The Referer field MUST NOT be sent if the Request-URI was obtained from a source that does not have its own URI, such as input from the user keyboard.

If the field value is a relative URI, it SHOULD be interpreted relative to the Request-URI. The URI MUST NOT include a fragment. See section 15.1.3 for security considerations.

14.37 Retry-After

The Retry-After response-header field can be used with a 503 (Service Unavailable) response to indicate how long the service is expected to be unavailable to the requesting client. This field MAY also be used with any 3xx (Redirection) response to indicate the minimum time the user-agent is asked wait before issuing the redirected request. The value of this field can be either an HTTP-date or an integer number of seconds (in decimal) after the time of the response.

Two examples of its use are

In the latter example, the delay is 2 minutes.

14.38 Server

The Server response-header field contains information about the software used by the origin server to handle the request. The field can contain multiple product tokens (section 3.8) and comments identifying the server and any significant subproducts. The product tokens are listed in order of their significance for identifying the application.

If the response is being forwarded through a proxy, the proxy application MUST NOT modify the Server response-header. Instead, it SHOULD include a Via field (as described in section 14.45).

14.39 TE

The TE request-header field indicates what extension transfer-codings it is willing to accept in the response and whether or not it is willing to accept trailer fields in a chunked transfer-coding. Its value may consist of the keyword "trailers" and/or a comma-separated list of extension transfer-coding names with optional accept parameters (as described in section 3.6).

The presence of the keyword "trailers" indicates that the client is willing to accept trailer fields in a chunked transfer-coding, as defined in section 3.6.1. This keyword is reserved for use with transfer-coding values even though it does not itself represent a transfer-coding.

The TE header field only applies to the immediate connection. Therefore, the keyword MUST be supplied within a Connection header field (section 14.10) whenever TE is present in an HTTP/1.1 message.

A server tests whether a transfer-coding is acceptable, according to a TE field, using these rules:

If the TE field-value is empty or if no TE field is present, the only transfer-coding is "chunked". A message with no transfer-coding is always acceptable.

14.40 Trailer

The Trailer general field value indicates that the given set of header fields is present in the trailer of a message encoded with chunked transfer-coding.

An HTTP/1.1 message SHOULD include a Trailer header field in a message using chunked transfer-coding with a non-empty trailer. Doing so allows the recipient to know which header fields to expect in the trailer.

If no Trailer header field is present, the trailer SHOULD NOT include any header fields. See section 3.6.1 for restrictions on the use of trailer fields in a "chunked" transfer-coding.

Message header fields listed in the Trailer header field MUST NOT include the following header fields:

14.41 Transfer-Encoding

The Transfer-Encoding general-header field indicates what (if any) type of transformation has been applied to the message body in order to safely transfer it between the sender and the recipient. This differs from the content-coding in that the transfer-coding is a property of the message, not of the entity.

Transfer-codings are defined in section 3.6. An example is:

If multiple encodings have been applied to an entity, the transfer- codings MUST be listed in the order in which they were applied. Additional information about the encoding parameters MAY be provided by other entity-header fields not defined by this specification.

Many older HTTP/1.0 applications do not understand the Transfer- Encoding header.

14.42 Upgrade

The Upgrade general-header allows the client to specify what additional communication protocols it supports and would like to use if the server finds it appropriate to switch protocols. The server MUST use the Upgrade header field within a 101 (Switching Protocols) response to indicate which protocol(s) are being switched.

The Upgrade header field is intended to provide a simple mechanism for transition from HTTP/1.1 to some other, incompatible protocol. It does so by allowing the client to advertise its desire to use another protocol, such as a later version of HTTP with a higher major version number, even though the current request has been made using HTTP/1.1. This eases the difficult transition between incompatible protocols by allowing the client to initiate a request in the more commonly supported protocol while indicating to the server that it would like to use a "better" protocol if available (where "better" is determined by the server, possibly according to the nature of the method and/or resource being requested).

The Upgrade header field only applies to switching application-layer protocols upon the existing transport-layer connection. Upgrade cannot be used to insist on a protocol change its acceptance and use by the server is optional. The capabilities and nature of the application-layer communication after the protocol change is entirely dependent upon the new protocol chosen, although the first action after changing the protocol MUST be a response to the initial HTTP request containing the Upgrade header field.

The Upgrade header field only applies to the immediate connection. Therefore, the upgrade keyword MUST be supplied within a Connection header field (section 14.10) whenever Upgrade is present in an HTTP/1.1 message.

The Upgrade header field cannot be used to indicate a switch to a protocol on a different connection. For that purpose, it is more appropriate to use a 301, 302, 303, or 305 redirection response.

This specification only defines the protocol name "HTTP" for use by the family of Hypertext Transfer Protocols, as defined by the HTTP version rules of section 3.1 and future updates to this specification. Any token can be used as a protocol name however, it will only be useful if both the client and server associate the name with the same protocol.

14.43 User-Agent

The User-Agent request-header field contains information about the user agent originating the request. This is for statistical purposes, the tracing of protocol violations, and automated recognition of user agents for the sake of tailoring responses to avoid particular user agent limitations. User agents SHOULD include this field with requests. The field can contain multiple product tokens (section 3.8) and comments identifying the agent and any subproducts which form a significant part of the user agent. By convention, the product tokens are listed in order of their significance for identifying the application.

14.44 Vary

The Vary field value indicates the set of request-header fields that fully determines, while the response is fresh, whether a cache is permitted to use the response to reply to a subsequent request without revalidation. For uncacheable or stale responses, the Vary field value advises the user agent about the criteria that were used to select the representation. A Vary field value of "*" implies that a cache cannot determine from the request headers of a subsequent request whether this response is the appropriate representation. See section 13.6 for use of the Vary header field by caches.

An HTTP/1.1 server SHOULD include a Vary header field with any cacheable response that is subject to server-driven negotiation. Doing so allows a cache to properly interpret future requests on that resource and informs the user agent about the presence of negotiation

on that resource. A server MAY include a Vary header field with a non-cacheable response that is subject to server-driven negotiation, since this might provide the user agent with useful information about the dimensions over which the response varies at the time of the response.

A Vary field value consisting of a list of field-names signals that the representation selected for the response is based on a selection algorithm which considers ONLY the listed request-header field values in selecting the most appropriate representation. A cache MAY assume that the same selection will be made for future requests with the same values for the listed field names, for the duration of time for which the response is fresh.

The field-names given are not limited to the set of standard request-header fields defined by this specification. Field names are case-insensitive.

A Vary field value of "*" signals that unspecified parameters not limited to the request-headers (e.g., the network address of the client), play a role in the selection of the response representation. The "*" value MUST NOT be generated by a proxy server it may only be generated by an origin server.

14.45 Via

The Via general-header field MUST be used by gateways and proxies to indicate the intermediate protocols and recipients between the user agent and the server on requests, and between the origin server and the client on responses. It is analogous to the "Received" field of RFC 822 [9] and is intended to be used for tracking message forwards, avoiding request loops, and identifying the protocol capabilities of all senders along the request/response chain.

The received-protocol indicates the protocol version of the message received by the server or client along each segment of the request/response chain. The received-protocol version is appended to the Via field value when the message is forwarded so that information about the protocol capabilities of upstream applications remains visible to all recipients.

The protocol-name is optional if and only if it would be "HTTP". The received-by field is normally the host and optional port number of a recipient server or client that subsequently forwarded the message. However, if the real host is considered to be sensitive information, it MAY be replaced by a pseudonym. If the port is not given, it MAY be assumed to be the default port of the received-protocol.

Multiple Via field values represents each proxy or gateway that has forwarded the message. Each recipient MUST append its information such that the end result is ordered according to the sequence of forwarding applications.

Comments MAY be used in the Via header field to identify the software of the recipient proxy or gateway, analogous to the User-Agent and Server header fields. However, all comments in the Via field are optional and MAY be removed by any recipient prior to forwarding the message.

For example, a request message could be sent from an HTTP/1.0 user agent to an internal proxy code-named "fred", which uses HTTP/1.1 to forward the request to a public proxy at nowhere.com, which completes the request by forwarding it to the origin server at www.ics.uci.edu. The request received by www.ics.uci.edu would then have the following Via header field:

Proxies and gateways used as a portal through a network firewall SHOULD NOT, by default, forward the names and ports of hosts within the firewall region. This information SHOULD only be propagated if explicitly enabled. If not enabled, the received-by host of any host behind the firewall SHOULD be replaced by an appropriate pseudonym for that host.

For organizations that have strong privacy requirements for hiding internal structures, a proxy MAY combine an ordered subsequence of Via header field entries with identical received-protocol values into a single such entry. على سبيل المثال،

Applications SHOULD NOT combine multiple entries unless they are all under the same organizational control and the hosts have already been replaced by pseudonyms. Applications MUST NOT combine entries which have different received-protocol values.

14.46 Warning

The Warning general-header field is used to carry additional information about the status or transformation of a message which might not be reflected in the message. This information is typically used to warn about a possible lack of semantic transparency from caching operations or transformations applied to the entity body of the message.

Warning headers are sent with responses using:

A response MAY carry more than one Warning header.

The warn-text SHOULD be in a natural language and character set that is most likely to be intelligible to the human user receiving the response. This decision MAY be based on any available knowledge, such as the location of the cache or user, the Accept-Language field in a request, the Content-Language field in a response, etc. The default language is English and the default character set is ISO-8859-1.

If a character set other than ISO-8859-1 is used, it MUST be encoded in the warn-text using the method described in RFC 2047 [14].

Warning headers can in general be applied to any message, however some specific warn-codes are specific to caches and can only be applied to response messages. New Warning headers SHOULD be added after any existing Warning headers. A cache MUST NOT delete any Warning header that it received with a message. However, if a cache successfully validates a cache entry, it SHOULD remove any Warning headers previously attached to that entry except as specified for

specific Warning codes. It MUST then add any Warning headers received in the validating response. In other words, Warning headers are those that would be attached to the most recent relevant response.

When multiple Warning headers are attached to a response, the user agent ought to inform the user of as many of them as possible, in the order that they appear in the response. If it is not possible to inform the user of all of the warnings, the user agent SHOULD follow these heuristics:

Systems that generate multiple Warning headers SHOULD order them with this user agent behavior in mind.

Requirements for the behavior of caches with respect to Warnings are stated in section 13.1.2.

This is a list of the currently-defined warn-codes, each with a recommended warn-text in English, and a description of its meaning.

110 Response is stale MUST be included whenever the returned response is stale.

111 Revalidation failed MUST be included if a cache returns a stale response because an attempt to revalidate the response failed, due to an inability to reach the server.

112 Disconnected operation SHOULD be included if the cache is intentionally disconnected from the rest of the network for a period of time.

113 Heuristic expiration MUST be included if the cache heuristically chose a freshness lifetime greater than 24 hours and the response's age is greater than 24 hours.

199 Miscellaneous warning The warning text MAY include arbitrary information to be presented to a human user, or logged. A system receiving this warning MUST NOT take any automated action, besides presenting the warning to the user.

214 Transformation applied MUST be added by an intermediate cache or proxy if it applies any transformation changing the content-coding (as specified in the Content-Encoding header) or media-type (as specified in the Content-Type header) of the response, or the entity-body of the response, unless this Warning code already appears in the response.

299 Miscellaneous persistent warning The warning text MAY include arbitrary information to be presented to a human user, or logged. A system receiving this warning MUST NOT take any automated action.

If an implementation sends a message with one or more Warning headers whose version is HTTP/1.0 or lower, then the sender MUST include in each warning-value a warn-date that matches the date in the response.

If an implementation receives a message with a warning-value that includes a warn-date, and that warn-date is different from the Date value in the response, then that warning-value MUST be deleted from the message before storing, forwarding, or using it. (This prevents bad consequences of naive caching of Warning header fields.) If all of the warning-values are deleted for this reason, the Warning header MUST be deleted as well.

14.47 WWW-Authenticate

The WWW-Authenticate response-header field MUST be included in 401 (Unauthorized) response messages. The field value consists of at least one challenge that indicates the authentication scheme(s) and parameters applicable to the Request-URI.

The HTTP access authentication process is described in "HTTP Authentication: Basic and Digest Access Authentication" [43]. User agents are advised to take special care in parsing the WWW- Authenticate field value as it might contain more than one challenge, or if more than one WWW-Authenticate header field is provided, the contents of a challenge itself can contain a comma-separated list of authentication parameters.


Making Sense of Attribute Gage R&R Calculations

Measurement error is unavoidable. There will always be some measurement variation that is due to the measurement system itself.

Most problematic measurement system issues come from measuring attribute data in terms that rely on human judgment such as good/bad, pass/fail, etc. This is because it is very difficult for all testers to apply the same operational definition of what is “good” and what is “bad.”

However, such measurement systems are seen throughout industries. One example is quality control inspectors using a high-powered microscope to determine whether a pair of contact lens is defect free. Hence, it is important to quantify how well such measurement systems are working.

The tool used for this kind of analysis is called attribute gage R&R. The R&R stands for repeatability and reproducibility. Repeatability means that the same operator, measuring the same thing, using the same gage, should get the same reading every time. Reproducibility means that different operators, measuring the same thing, using the same gage, should get the same reading every time.

Attribute gage R&R reveals two important findings – percentage of repeatability and percentage of reproducibility. Ideally, both percentages should be 100 percent, but generally, the rule of thumb is anything above 90 percent is quite adequate.

Obtaining these percentages can be done using simple mathematics, and there is really no need for sophisticated software. Nevertheless, Minitab has a module called Attribute Agreement Analysis (in Minitab 13, it was called Attribute Gage R&R) that does the same and much more, and this makes analysts’ lives easier.

Having said that, it is important for analysts to understand what the statistical software is doing to make good sense of the report. In this article, the steps are reproduced using spreadsheet software with a case study as an example.

Steps to Calculate Gage R&R

Step 1: Select between 20 to 30 test samples that represent the full range of variation encountered in actual production runs. Practically speaking, if “clearly good” parts and “clearly bad” parts are chosen, the ability of the measurement system to accurately categorize the ones in between will not be tested. For maximum confidence, a 50-50 mix of good/bad parts is recommended. A 30:70 ratio is acceptable.

الخطوة 2: Have a master appraiser categorize each test sample into its true attribute category.

Figure 1: Master Appraiser Categorizations

الخطوه 3: Select two to three inspectors and have them categorize each test sample without knowing what the master appraiser has rated them.

الخطوة الرابعة: Place the test samples in a new random order and have the inspectors repeat their assessments.

Step 5: For each inspector, count the number of times his or her two readings agree. Divide this number with the total inspected to obtain the percentage of agreement. This is the individual repeatability of that inspector (Minitab calls this “Within Appraiser”).

To obtain the overall repeatability, obtain the average of all individual repeatability percentages for all inspectors. In this case study, the overall repeatability is 95.56 percent, which means if the measurements are repeated on the same set of items, there is a 95.56 percent chance of getting the same results, which is not bad but not perfect.

Figure 3: Individual Repeatability

In this case, the individual repeatability of Operator 1 is only 90 percent. This means that Operator 1 is only consistent with himself 90 percent of the time. He needs retraining.

الخطوة السادسة: Compute the number of times each inspector’s two assessments agree with each other and also the standard produced by the master appraiser in Step 2.

Figure 4: Individual Effectiveness

This percentage is called the individual effectiveness (Minitab calls this “Each Appraiser vs. Standard”). In this case, Operator 1 is in agreement with the standard only 80 percent of the time. He needs retraining.

Step 7: Compute the percentage of times all the inspectors’ assessments agree for the first and second measurement for each sample item.

Figure 5: Reproducibility of the Measurement System

This percentage is the reproducibility of the measurement system (Minitab calls this “Between Appraiser”). All three inspectors agree with each other only 83.3 percent of the time. They may not be all using exactly the same operational definition for pass/fail all the time or may have a very slight difference in interpretation of what constitutes a pass and a failure.

Step 8: Compute the percentage of the time all the inspectors’ assessments agree with each other and with the standard.

Figure 6: Overall Effectiveness of the Measurement System

This percentage gives the overall effectiveness of the measurement system (Minitab calls this “All Appraiser vs. Standard”). It is the percent of time all inspectors agree and their agreement matches with the standard.

Minitab produces a lot more statistics in the output of the attribute agreement analysis, but for most cases and use, the analysis outlined in this article should suffice.

So What If the Gage R&R Is Not Good?

The key in all measurement systems is having a clear test method and clear criteria for what to accept and what to reject. The steps are as follows:


Retrieving the date

It is simple to make PowerShell display the current date. To do so, just enter the Get-Date cmdlet. If you need to display the date in a certain way, then PowerShell offers a number of different options for doing so. The simplest method is to use a display hint. The DisplayHint parameter can be set to Date, Time, or DateTime. The image below shows how the basic Get-Date cmdlet works, and a few examples of using the DisplayHint parameter.

If you need a bit more control over the output, you can use the Format parameter or the UFormat parameter. The Format parameter is mostly used when you need to put the date into a certain format for the purpose of making a comparison. We won’t be using the Format parameter in this article, but it is still a good idea to be aware of its existence.

The UFormat parameter is used more for display purposes. It allows you to arrange the various elements that make up the date and time in a way of your choosing. All you have to do is to append various formatting characters to the UFormat parameter. The parameters that you can use include:

%M — Month (as a number)
%D — Date
%Y — Year
%A — The day of the week
%Z — The time zone, expressed as an offset from UTC or Zulu time. For example, -5 is Eastern Time in the United States.

You can see an example below of how the UFormat parameter works.


There are two things that are worth paying attention to in the image above. First, you will notice that everything following the UFormat parameter is enclosed in quotation marks. This is because I am not just specifying formatting characters, I can also use text. In the figure, I used a mixture of text and formatting characters.

The other thing to notice is that even though I live on the East Coast of the United States, which normally has a time zone offset of -5, the output in the figure above shows the offset as -4. This is because it is daylight saving time. But wouldn’t it be nice to be able to verify that? We can actually. Here is how it’s done:

As you can see in the image below, PowerShell shows a value of True, indicating that it is indeed daylight savings time.


DateTime Data Type

The dateTime data type is used to specify a date and a time.

The dateTime is specified in the following form "YYYY-MM-DDThh:mm:ss" where:

  • YYYY indicates the year
  • MM indicates the month
  • DD indicates the day
  • T indicates the start of the required time section
  • hh indicates the hour
  • mm indicates the minute
  • ss indicates the second

ملحوظة: All components are required!

The following is an example of a dateTime declaration in a schema:

An element in your document might look like this:

Or it might look like this:

Time Zones

To specify a time zone, you can either enter a dateTime in UTC time by adding a "Z" behind the time - like this:

or you can specify an offset from the UTC time by adding a positive or negative time behind the time - like this:


Operators

Adds a specified time interval to a DateTimeOffset object that has a specified date and time, and yields a DateTimeOffset object that has new a date and time.

Determines whether two specified DateTimeOffset objects represent the same point in time.

Determines whether one specified DateTimeOffset object is greater than (or later than) a second specified DateTimeOffset object.

Determines whether one specified DateTimeOffset object is greater than or equal to a second specified DateTimeOffset object.

Defines an implicit conversion of a DateTime object to a DateTimeOffset object.

Determines whether two specified DateTimeOffset objects refer to different points in time.

Determines whether one specified DateTimeOffset object is less than a second specified DateTimeOffset object.

Determines whether one specified DateTimeOffset object is less than a second specified DateTimeOffset object.

Subtracts one DateTimeOffset object from another and yields a time interval.

Subtracts a specified time interval from a specified date and time, and yields a new date and time.


شاهد الفيديو: تنسيق الوقت والتاريخ فى برنامج الاكسيل 2010 - 2007 (شهر اكتوبر 2021).