html - شرح - الفرق بين get و post




هل طرق HTTP POST ترسل البيانات على أنها QueryString؟ (4)

أود أن أعرف ما إذا كان الأسلوب POST على HTTP يرسل البيانات كـ QueryString ، أو إذا كان يستخدم بنية خاصة لتمرير البيانات إلى الخادم.

في الحقيقة ، عندما أحلل التواصل مع طريقة POST من العميل إلى الخادم (مع Fiddler على سبيل المثال) ، لا أرى أي QueryString ، لكن سياق Form Form مع أزواج الاسم / القيمة.


أفضل طريقة لتصور هذا هو استخدام محلل حزم مثل Wireshark واتباع دفق TCP . يستخدم HTTP بروتوكول TCP لإرسال تدفق البيانات بدءًا من بضعة أسطر من رؤوس HTTP. غالبًا ما تكون هذه البيانات سهلة القراءة لأنها تتكون من HTML أو CSS أو XML ، ولكنها يمكن أن تكون أي نوع من البيانات التي يتم نقلها عبر الإنترنت (الملفات القابلة للتنفيذ ، الصور ، الفيديو ، إلخ).

بالنسبة لطلب GET ، يطلب جهاز الكمبيوتر الخاص بك عنوان URL محددًا وعادةً ما يستجيب خادم الويب برمز الحالة 200 ويتم إرسال محتوى صفحة الويب مباشرةً بعد رؤوس استجابة HTTP. هذا المحتوى هو نفس المحتوى الذي تشاهده إذا شاهدت مصدر صفحة الويب في متصفحك. تعتبر سلسلة الاستعلام التي ذكرتها مجرد جزء من عنوان URL ويتم تضمينها في رأس طلب HTTP GET الذي يرسله الكمبيوتر الخاص بك إلى خادم الويب. في ما يلي مثال لطلب HTTP GET إلى http://accel91.citrix.com:8000/OA_HTML/OALogout.jsp?menu=Y ، متبوعًا برد 302 من الخادم. يتم التفاف بعض رؤوس HTTP نظرًا لحجم نافذة العرض (هذه فقط تأخذ سطرًا واحدًا لكل منها) ، وتتضمن إعادة التوجيه 302 صفحة ويب HTML بسيطة مع رابط إلى صفحة الويب التي تمت إعادة توجيهها (ستقوم معظم المتصفحات تلقائيًا بإعادة توجيه أي استجابة 302 إلى عنوان URL المدرج في رأس الموقع بدلاً من عرض استجابة HTML):

بالنسبة لطلب POST ، لا يزال لديك سلسلة استعلام ، ولكن هذا غير شائع وليس له أي علاقة بالبيانات التي تستخدمها POSTING. بدلاً من ذلك ، يتم تضمين البيانات مباشرة بعد رؤوس HTTP التي يرسلها متصفحك إلى الخادم ، على غرار 200 استجابة يستخدمها خادم الويب للاستجابة لطلب GET. في حالة POSTing نموذج ويب بسيط يتم en.wikipedia.org/wiki/POST_%28HTTP%29 هذه البيانات en.wikipedia.org/wiki/POST_%28HTTP%29 الذي تستخدمه سلسلة الاستعلام ، ولكن إذا كنت تستخدم خدمة ويب SOAP ، فيمكن تشفيرها أيضًا باستخدام تنسيق MIME متعدد الأجزاء وبيانات XML .

على سبيل المثال ، هنا ما يبدو HTTP POST إلى خدمة ويب SOAP يستند إلى XML الموجودة في http://192.168.24.23:8090/msh في Wireshark اتبع TCP Stream :


إذا كانت مشاركتك تحاول الوصول إلى عنوان URL التالي

mypage.php؟ ID = 1

سيكون لديك بيانات POST ولكن أيضا بيانات GET.


سيرسل GET البيانات على أنها سلسلة مطالبات ، ولكن لن يتم إجراء POST. بل سيرسلها في نص الطلب.


يمكن أن يشتمل طلب POST على سلسلة استعلام ، إلا أنه لا يحدث عادة - لن يتضمن نموذج HTML القياسي مع إجراء POST عادة سلسلة استعلام على سبيل المثال.





post