طلب POST (HTTP)

في مجال الحوسبة ، يُعدّ POST أحد أساليب الطلب التي يدعمها بروتوكول HTTP والمستخدمة في شبكة الإنترنت العالمية . يُطلب من خادم الويب، بحسب تصميمه، قبول البيانات المُضمّنة في نص رسالة الطلب، وذلك غالبًا لتخزينها. [ 1 ] ويُستخدم هذا الأسلوب عادةً عند تحميل ملف أو عند إرسال نموذج ويب مُكتمل .

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

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

بيانات النشر

يعتمد الويب العالمي وبروتوكول HTTP على عدد من أساليب أو "أفعال" الطلب، بما في ذلك POST وGET بالإضافة إلى PUT وDELETE وغيرها. تستخدم متصفحات الويب عادةً GET وPOST فقط، بينما تستخدم تطبيقات RESTful عبر الإنترنت العديد من الأساليب الأخرى. يتمثل دور POST ضمن مجموعة أساليب HTTP في إرسال تمثيل لكيان بيانات جديد إلى الخادم ليتم تخزينه كعنصر فرعي جديد للمورد المحدد بواسطة URI . [ 1 ] على سبيل المثال، بالنسبة لـ URI ، قد يُتوقع أن تمثل طلبات POST عملاء جدد، يتضمن كل منهم اسمه وعنوانه وتفاصيل الاتصال به وما إلى ذلك. انحرف مصممو مواقع الويب الأوائل عن هذا المفهوم الأصلي بطريقتين مهمتين. أولاً، لا يوجد سبب تقني لأن يصف URI نصيًا مورد الويب الفرعي الذي سيتم تخزين بيانات POST عليه. في الواقع، ما لم يُبذل جهد ما، فمن المرجح أن يصف الجزء الأخير من URI صفحة معالجة تطبيق الويب وتقنيته، مثل ... ثانيًا، نظرًا للقيود الطبيعية لمعظم متصفحات الويب التي تقتصر على استخدام GET أو POST فقط، شعر المصممون بالحاجة إلى إعادة توظيف POST للقيام بالعديد من مهام إرسال البيانات وإدارة البيانات الأخرى، بما في ذلك تعديل السجلات الموجودة وحذفها.http://example.com/customershttp://example.com/applicationform.php

بدأت جهود بعض الكتّاب المؤثرين لمعالجة النقطة الأولى في وقت مبكر من عام ١٩٩٨. [ ٢ ] تُسهّل أُطر عمل تطبيقات الويب ، مثل Ruby on Rails وغيرها، على المصممين تزويد مستخدميهم بعناوين URL دلالية . أما فيما يتعلق بالنقطة الثانية، فمن الممكن استخدام البرمجة النصية من جانب العميل ، أو كتابة تطبيقات مستقلة، للاستفادة من طرق HTTP الأخرى عند الحاجة، [ ٣ ] ولكن بخلاف ذلك، تستمر معظم نماذج الويب التي تُرسل أو تُعدّل بيانات الخادم في استخدام POST لهذا الغرض.

لا يعني هذا أن كل نموذج ويب يجب أن يحدد ذلك method="post"في وسمه الافتتاحي . تُستخدم العديد من النماذج لتحديد استرجاع المعلومات من الخادم بدقة أكبر، دون أي نية لتغيير قاعدة البيانات الرئيسية. على سبيل المثال، تُعد نماذج البحث مناسبة تمامًا لتحديد method="get"ذلك. [ 4 ]

في بعض الأحيان، يكون استخدام طلب HTTP GET أقل ملاءمة حتى لاسترجاع البيانات. على سبيل المثال، عند الحاجة إلى تحديد كمية كبيرة من البيانات في عنوان URL. قد تفرض المتصفحات وخوادم الويب قيودًا على طول عنوان URL الذي يمكنها التعامل معه دون اقتطاع أو خطأ. يمكن أن يؤدي ترميز الأحرف المحجوزة في عناوين URL وسلاسل الاستعلام إلى زيادة طولها بشكل ملحوظ، وبينما يستطيع خادم Apache HTTP التعامل مع ما يصل إلى 4000 حرف في عنوان URL، [ 5 ] فإن متصفح Microsoft Internet Explorer (الذي توقف دعمه عام 2022) يقتصر على 2083 حرفًا في أي عنوان URL، وبحد أقصى لطول المسار يبلغ 2048 حرفًا. [ 6 ] وبالمثل، لا يُنصح باستخدام HTTP GET عند الحاجة إلى إرسال معلومات حساسة، مثل أسماء المستخدمين وكلمات المرور، مع بيانات أخرى لإتمام الطلب. حتى مع استخدام بروتوكول HTTPS ، الذي يمنع اعتراض البيانات أثناء نقلها، فمن المرجح أن يحتوي سجل المتصفح وسجلات خادم الويب على عنوان URL الكامل كنص عادي، والذي قد يُكشف في حال اختراق أي من النظامين. في هذه الحالات، يُنصح باستخدام بروتوكول HTTP POST. [ 7 ]

يُستخدم لإرسال نماذج الويب

عندما يرسل متصفح الويب طلب POST من عنصر نموذج ويب ، يكون نوع وسائط الإنترنت الافتراضي هو " application/x-www-form-urlencoded ". [ 8 ] هذا تنسيق لترميز أزواج المفاتيح والقيم، مع إمكانية وجود مفاتيح مكررة. يفصل بين كل زوج مفتاح وقيمة علامة "&"، ويفصل بين كل مفتاح وقيمته علامة "=". يتم تهريب المفاتيح والقيم باستبدال المسافات بعلامة "+"، ثم استخدام ترميز النسبة المئوية على جميع الأحرف غير الأبجدية الرقمية الأخرى. [ 9 ]

على سبيل المثال، أزواج المفتاح والقيمة

الاسم: ليام وايلي العمر: 24 الصيغة: أ + ب = 21 

يتم ترميزها على النحو التالي

الاسم: ليام وايلي، العمر: 24، الصيغة: a%2Bb+%3D%3D+21 

ابتداءً من HTML 4.0، يمكن للنماذج أيضًا إرسال البيانات في multipart/form-data كما هو محدد في RFC 2388 (انظر أيضًا RFC 1867 للحصول على إصدار تجريبي سابق تم تعريفه كامتداد لـ HTML 2.0 وتم ذكره في HTML 3.2).

تُعرف الحالة الخاصة لإرسال طلب POST إلى نفس الصفحة التي ينتمي إليها النموذج باسم postback .

التأثير على حالة الخادم

وفقًا لمعيار RFC 7231، فإنّ طريقة POST ليست متكررة النتائج ، بمعنى أنّ إرسال طلبات متطابقة متعددة قد لا يُحدث نفس تأثير إرسال الطلب مرة واحدة فقط. لذا، تُناسب POST الطلبات التي تُغيّر الحالة في كل مرة تُنفّذ فيها، مثل إرسال تعليق على منشور مدونة أو التصويت في استطلاع رأي عبر الإنترنت. أما GET، فهي تُعرّف بأنها عديمة التأثير ، أي ليس لها آثار جانبية، والعمليات المتكررة النتائج "ليس لها آثار جانبية على الطلبات اللاحقة أو المستقبلية". [ 10 ] [ 11 ] لهذا السبب، تستخدم برامج زحف الويب، مثل برامج فهرسة محركات البحث، عادةً طريقتي GET وHEAD حصريًا، لمنع طلباتها الآلية من تنفيذ مثل هذه الإجراءات.

مع ذلك، توجد أسباب لاستخدام POST حتى في الطلبات المتكررة، لا سيما إذا كان الطلب طويلاً جدًا. فبسبب القيود المفروضة على عناوين URL، قد يصبح نص الاستعلام الذي تولده طريقة GET طويلاً جدًا، خاصةً بسبب ترميز النسبة المئوية . [ 10 ]

مراجع

  1. 1 2 فيلدينغ، ر.؛ ريشكه، ج.، محرران. (يونيو 2014). "POST" . بروتوكول نقل النص التشعبي (HTTP/1.1): الدلالات والمحتوى . IETF . القسم  4.3.3. doi : 10.17487/RFC7231 . ISSN 2070-1721 . S2CID 14399078. RFC 7231. تاريخ الاسترجاع: 28 يناير 2026. تطلب طريقة POST من المورد المستهدف معالجة التمثيل المرفق بالطلب وفقًا لدلالات المورد الخاصة .  
  2. بيرنرز-لي، تيم (1998). "معرّفات الموارد الموحدة الرائعة لا تتغير" . دليل أسلوب النص التشعبي على الإنترنت . اتحاد شبكة الويب العالمية . تم الاطلاع عليه بتاريخ 28 يناير 2026 .
  3. فريدمان، مايك (2009). "استخدام طريقتي HTTP PUT وDELETE في تطبيقات الويب" . blogs.perl.org . تم الاطلاع عليه بتاريخ 17 أكتوبر 2012 .
  4. "إرسال النموذج" . مواصفات HTML 4.01 . اتحاد شبكة الويب العالمية . 1999. تم الاطلاع عليه بتاريخ 17 أكتوبر 2012 .
  5. ريغسبي، دان (2008). "REST والحد الأقصى لحجم عنوان URL" . أسلوب البرمجة . مؤرشف من الأصل في 4 نوفمبر 2012. تم الاسترجاع في 17 أكتوبر 2012 .
  6. "الحد الأقصى لطول عنوان URL هو 2083 حرفًا في متصفح إنترنت إكسبلورر" . دعم مايكروسوفت . KB208427.
  7. فيلدينغ، ر .؛ ريشكه، ج.، محرران. (يونيو 2014). "الكشف عن المعلومات الحساسة في معرّفات الموارد الموحدة" . بروتوكول نقل النص التشعبي (HTTP/1.1): الدلالات والمحتوى . IETF . القسم 9.4. doi : 10.17487/RFC7231 . ISSN 2070-1721 . S2CID 14399078. RFC 7231. تاريخ الاسترجاع: 28 يناير 2026 .   
  8. بيرنرز-لي، تيم ؛ كونولي، دان (22 سبتمبر 1995). "لغة ترميز النص التشعبي - 2.0 - النماذج" . اتحاد شبكة الويب العالمية . تم الاطلاع عليه في 15 يناير 2011 .
  9. "النماذج في مستندات HTML" .
  10. 1 2 كوربيلا، يوكا (28 سبتمبر 2003). "طرق GET و POST في نماذج HTML - ما الفرق؟" . جامعة تامبيري للتكنولوجيا . تم الاطلاع عليه في 15 يناير 2011 .
  11. RFC 7231، 4.2.1 طرق آمنة