← جميع الأسئلة
ما الفروق الرئيسية بين طريقتي الطلب HTTP GET وPOST؟
متوسطمبتدئDevOpsالخلفية

ما الفروق الرئيسية بين طريقتي الطلب HTTP GET وPOST؟

إجابة مختصرة
تطلب GET البيانات (للقراءة فقط)، وهي آمنة، وقابلة للتكرار، وقابلة للتخزين المؤقت افتراضيًا، وتضع المعلمات في عنوان URL. أما POST فتُرسل البيانات في جسم الطلب ليعالجها الخادم، وليست آمنة ولا قابلة للتكرار ولا قابلة للتخزين المؤقت افتراضيًا.

الغرض

  • GET يطلب تمثيلًا لمورد. ووفقًا للمواصفة فهو للقراءة فقط: لا يتوقع العميل أي تغيير في حالة الخادم. وتشير RFC 9110 إلى أن إرسال جسم في طلب GET له دلالات غير محددة، لذلك لا ينبغي أن يحمل GET جسمًا.
  • POST يطلب من المورد الهدف معالجة البيانات المضمَّنة في جسم الطلب وفقًا لدلالات ذلك المورد نفسه (إنشاء سجل، إرسال نموذج، رفع ملف، إلخ).

أين تذهب البيانات

  • GET يحمل المعلمات في سلسلة الاستعلام في عنوان URL (بعد ?، بصيغة key=value&...). تكون هذه مرئية في شريط العنوان ومخزنة في سجل المتصفح وسجلات الخادم، وتخضع لحد عملي لطول عنوان URL.
  • POST يحمل البيانات في جسم الطلب؛ ويُحدَّد النوع بواسطة ترويسة Content-Type. تستخدم نماذج HTML عادة application/x-www-form-urlencoded (الافتراضي) أو multipart/form-data (للملفات). لا يوجد حد ثابت على مستوى البروتوكول للحجم، لكن الخوادم والوسطاء يضبطون حدودهم القصوى الخاصة (مثلًا Nginx client_max_body_size).

الخصائص وفق RFC 9110

  • آمن (Safe): GET آمن (للقراءة فقط)؛ POST ليس كذلك.
  • قابل للتكرار (Idempotent): يكون الطلب قابلاً للتكرار إذا كانت ممارسته N مرات لها الأثر نفسه على حالة الخادم كما لو فُعل مرة واحدة. GET قابل للتكرار؛ POST ليس كذلك — فإعادته قد تنشئ نسخًا مكررة، مثل طلبين متطابقين. والقابلية للتكرار ليست هي نفسها الأمان (PUT وDELETE قابلان للتكرار لكنهما غير آمنين)، ولا تقول شيئًا عن تطابق جسم الاستجابة.
  • قابل للتخزين المؤقت: استجابات GET قابلة للتخزين المؤقت افتراضيًا؛ أما استجابات POST فلا تكون قابلة للتخزين المؤقت إلا إذا تضمنت معلومات صراحةً عن الحداثة مع ترويسة Content-Location مطابقة، وهو أمر نادر عمليًا.

الآثار العملية

  • استخدم GET للاسترجاع والتنقل؛ إذ يمكن تكرار النتائج بأمان، ووضعها في الإشارات المرجعية، وجلبها مسبقًا، كما أن تحديث صفحة GET غير ضار.
  • استخدم POST للإجراءات التي تغيّر الحالة ولإرسال حمولات حساسة أو كبيرة. يؤدي التحديث أو الرجوع إلى صفحة POST إلى ظهور تحذير المتصفح «تأكيد إعادة إرسال النموذج».
  • لا ترسل كلمات المرور عبر GET أبدًا — إذ ستظهر في عنوان URL والسجلات والسجلّات التاريخية. هذا يتعلق بالنظافة، لا بالتشفير: HTTPS يُشفّر كلًّا من عنوان URL والجسم أثناء النقل، لكن عنوان URL يظل مسجَّلًا.

متابعات شائعة

  • الطرق الآمنة هي GET وHEAD وOPTIONS؛ والطرق القابلة للتكرار هي GET وHEAD وPUT وDELETE؛ أما POST فلا هو آمن ولا قابل للتكرار.
  • كلا الطريقتين مدعومتان في نماذج HTML (السمة method).
  • «آمن» في معنى RFC يعني عدم تغيير الحالة، وليس حماية البيانات.
  • غالبًا ما يُفرَض تكرار POST على مستوى التطبيق باستخدام مفاتيح التكرار.
HTTPالشبكات

حمّله الآن وجرّبه مجانًا على مهامك!

تنزيل لنظام Windows
10 15 رصيد مجاني • لا حاجة لبطاقة ائتمانالإصدار: جارٍ التحميل…

بدون تثبيت - نزّل وشغّل. بدون تسجيل - دخول عبر Google.