توجد 5 اختلافات في نموذج إرسال النشر في البرنامج التعليمي لـ asp. ويتم تقديم طلبات ونماذج HTTP بشكل منفصل. يمكن للأصدقاء المحتاجين التعرف على الاختلافات الخمسة التالية في نموذج إرسال النشر في البرنامج التعليمي لـ asp.
هناك 5 اختلافات بين طريقتي Get وPost
1. Get هو الحصول على البيانات من الخادم، والنشر هو نقل البيانات إلى الخادم.
2. يضيف Get قائمة انتظار بيانات المعلمات إلى عنوان URL المشار إليه بواسطة سمة ACTION للنموذج المقدم. تتوافق القيم مع كل حقل في النموذج واحد لواحد ويمكن رؤيتها في عنوان URL. يستخدم النشر آلية نشر HTTP لوضع كل حقل في النموذج ومحتواه في HTML HEADER وإرساله إلى عنوان URL المشار إليه بواسطة سمة ACTION. لا يمكن للمستخدمين رؤية هذه العملية.
3. بالنسبة لطريقة الحصول، يستخدم جانب الخادم Request.QueryString للحصول على قيمة المتغير. بالنسبة لطريقة النشر، يستخدم جانب الخادم Request.Form للحصول على البيانات المرسلة.
4. كمية البيانات المنقولة عن طريق get صغيرة ولا يمكن أن تزيد عن 2 كيلو بايت. كمية البيانات المرسلة عبر البريد كبيرة نسبيًا وغير مقيدة بشكل افتراضي. ولكن من الناحية النظرية، الحد الأقصى للمبلغ هو 80 كيلو بايت في IIS4 و100 كيلو بايت في IIS5.
5. أمان الحصول على المنتج منخفض جدًا، وأمان البريد مرتفع.
طلب HTTP: الفرق بين طريقتي GET وPOST
يحدد HTTP طرقًا مختلفة للتفاعل مع الخادم، وأبسط الطرق هي GET وPOST. في الواقع، يعد GET مناسبًا لمعظم الطلبات، بينما POST مخصص فقط لتحديث الموقع. وفقًا لمواصفات HTTP، يتم استخدام GET لاسترجاع المعلومات ويجب أن يكون آمنًا وغير فعال. كلمة "آمنة" تعني أن العملية تُستخدم للحصول على المعلومات بدلاً من تعديلها. بمعنى آخر، يجب ألا يكون لطلبات GET عمومًا أي آثار جانبية. Idempotent يعني أن الطلبات المتعددة لنفس عنوان URL يجب أن تُرجع نفس النتيجة. التعريف الكامل ليس صارما كما يبدو. في الأساس، الهدف هو أنه عندما يفتح المستخدم رابطًا، يمكنه أن يكون واثقًا من أن المورد لم يتغير من وجهة نظره. على سبيل المثال، يتم تحديث الصفحة الأولى لموقع إخباري باستمرار. على الرغم من أن الطلب الثاني يُرجع مجموعة مختلفة من الأخبار، إلا أن العملية لا تزال تعتبر آمنة وغير فعالة لأنها تُرجع دائمًا الأخبار الحالية. والعكس صحيح. طلبات POST ليست بهذه السهولة. يمثل POST طلبًا قد يغير موردًا على الخادم. مع الاستمرار في أخذ موقع الأخبار كمثال، يجب تنفيذ تعليقات القراء على المقالة من خلال طلبات POST، لأن الموقع يختلف بعد تقديم التعليق التوضيحي (على سبيل المثال، يظهر تعليق توضيحي أسفل المقالة)؛
عند إرسال نموذج، إذا لم يتم تحديد الطريقة، فإن الإعداد الافتراضي هو طلب GET، وسيتم إلحاق البيانات المقدمة في النموذج بعنوان URL، مفصولة عن عنوان url بـ ?. يتم إرسال الأحرف الأبجدية الرقمية كما هي، ولكن يتم تحويل المسافات إلى علامات + ويتم تحويل الرموز الأخرى إلى %XX، حيث XX هي قيمة ASCII (أو ISO Latin-1) للرمز بالنظام الست عشري. يتم وضع البيانات المقدمة بواسطة طلب GET في رأس بروتوكول طلب HTTP، بينما يتم وضع البيانات المقدمة بواسطة POST في بيانات الكيان؛ يمكن أن يصل حجم البيانات المقدمة بواسطة GET إلى 1024 بايت فقط، بينما لا يحتوي POST على هذا الحد.
ما الفرق بين استخدام النشر والحصول على نموذج؟
في النموذج، يمكنك استخدام post أو get. وكلها قيم قانونية للطريقة. ومع ذلك، هناك اختلافان على الأقل في استخدام طريقتي النشر والحصول على:
1. تقوم طريقة Get بتمرير إدخال المستخدم من خلال طلب URL. تأخذ طريقة النشر شكلاً آخر.
2. عند الإرسال في وضع Get، يجب عليك استخدام Request.QueryString للحصول على قيمة المتغير. عند الإرسال في وضع Post، يجب عليك الوصول إلى المحتوى المقدم من خلال Request.Form.
ادرس الكود أدناه بعناية. يمكنك تشغيله لتتعرف عليه:
شفرة
وفيما يلي المحتوى المقتبس:
<!--الفرق الوحيد بين النموذجين هو سمة الطريقة-->
انسخ رمز الكود كما يلي:
<إجراء النموذج=طريقة البرنامج التعليمي getpost.php=get>
<INPUT TYPE=اسم النص=نص VALUE=مرحبًا بالعالم></INPUT>
<نوع الإدخال=إرسال VALUE=الطريقة=الحصول على></INPUT>
</فورم>
<ر>
<إجراء النموذج=getpost.php الطريقة=post>
<INPUT TYPE=اسم النص=نص VALUE=مرحبًا بالعالم></INPUT>
<نوع الإدخال=إرسال VALUE=الطريقة=النشر></INPUT>
</فورم>
<؟ إذا كان Request.QueryString(Text) <> إذن؟>
السلسلة التي تم تمريرها عبر طريقة الحصول هي: <B><?= Request.QueryString(Text) ?></B><BR>
<؟ نهاية إذا؟>
<؟ إذا كان نموذج الطلب (نص) <> إذن؟>
السلسلة التي تم تمريرها عبر طريقة النشر هي: <B><?= Request.Form(Text) ?></B><BR>
<؟ نهاية إذا؟>
يوضح
احفظ الكود أعلاه باسم getpost.asp، ثم قم بتشغيله أولاً واختبر طريقة النشر في هذا الوقت، ولم يتغير عنوان URL للمتصفح، والنتيجة التي تم إرجاعها هي:
السلسلة التي تم تمريرها عبر طريقة النشر هي: Hello World
ثم يتم إرسال الاختبار باستخدام طريقة get. يرجى ملاحظة أن عنوان URL للمتصفح يصبح:
http://localhost/general/form/getpost.php?Text=Hello+World
والنتيجة التي عادت هي :
السلسلة التي تم تمريرها عبر طريقة get هي: Hello World
وأخيرًا، أرسله عبر طريقة النشر، ولا يزال عنوان URL للمتصفح هو:
http://localhost/general/form/getpost.php?Text=Hello+World
وتصبح النتيجة التي تم إرجاعها :
السلسلة التي تم تمريرها عبر طريقة get هي: Hello World
السلسلة التي تم تمريرها عبر طريقة النشر هي: Hello World
تَلمِيح
قد يؤدي إرسال البيانات من خلال طريقة get إلى حدوث مشكلات أمنية. على سبيل المثال، صفحة مقصودة. عند إرسال البيانات عبر طريقة get، سيظهر اسم المستخدم وكلمة المرور على عنوان URL. لو:
1. يمكن تخزين صفحة تسجيل الدخول مؤقتًا بواسطة المتصفح؛
2. يمكن للآخرين الوصول إلى جهاز العميل.
وبعد ذلك، يمكن للآخرين قراءة رقم حساب العميل وكلمة المرور من سجل المتصفح. لذلك، في بعض الحالات، يمكن أن تتسبب طريقة get في حدوث مشكلات أمنية خطيرة.
اقتراح
في النموذج، يوصى باستخدام طريقة النشر.