browser ترجمه - ما هو أقصى طول ممكن لسلسلة الاستعلام؟




طريق عليه (5)

هل يعتمد المتصفح؟ أيضًا ، هل توجد حدود مختلفة لمجموعات الويب المختلفة حول مقدار البيانات التي يمكنها الحصول عليها من الطلب؟


Answers

تدعم مجموعات الويب المختلفة أطوالًا مختلفة لطلبات http. أعرف من التجربة أن الأكوام الأولى من Safari لا تدعم سوى 4000 حرفًا وبالتالي تواجه صعوبة في التعامل مع صفحات ASP.net بسبب USER-STATE. هذا حتى بالنسبة لـ POST ، لذلك يجب عليك التحقق من المستعرض ومعرفة الحد الأقصى المسموح به. أعتقد أنك قد تصل إلى حد حتى على المتصفحات الجديدة. لا أستطيع أن أتذكر ولكن كان واحد منهم (IE6 ، على ما أظن) الحد من 16 بت ، 32768 أو شيء من هذا.


أفترض أنك تعني الطول الأقصى لسلسلة uri. Boutell.com قد يساعد.

عادةً ما يصبح URI غير قابل للقراءة نظرًا لأنها طويلة جدًا ، فقد حان الوقت لاستخدام طلب POST بدلاً من ذلك.


على الرغم من عدم وجود أي حد رسمي ، تنص العديد من توصيات تكوين الأمان على أنه يجب تعيين maxQueryStrings على خادم بحد أقصى 1024 حرفًا ، بينما يجب تعيين عنوان url بأكمله بما في ذلك سلسلة الاستعلام إلى 2048 حرفًا كحد أقصى. هذا لمنع مشكلة عدم حصانة طلب HTTP بطيء على خادم ويب لمنع هجمات DDOS بطيئة.


ينص RFC 2616 (بروتوكول نقل النص التشعبي - HTTP / 1.1) على أنه لا يوجد حد لطول سلسلة الاستعلام (القسم 3.2.1). كما ينص RFC 3986 على أنه لا يوجد حد ، ولكنه يشير إلى أن اسم المضيف محدد بـ 255 حرفًا بسبب قيود DNS (القسم 2.3.3).

في حين أن المواصفات لا تحدد أي حد أقصى للطول ، يتم فرض حدود عملية من قبل متصفح الويب وبرنامج الخادم. استنادًا إلى البحث الموجود في موقع Boutell.com :

  • مايكروسوفت إنترنت إكسبلورر (المتصفح)
    توضح Microsoft أن الحد الأقصى لطول عنوان URL في Internet Explorer هو 2083 حرفًا ، مع عدم وجود أكثر من 2048 حرفًا في جزء المسار من عنوان URL. أدت محاولات استخدام عناوين URL أطول من هذا إلى ظهور رسالة خطأ واضحة في Internet Explorer.

  • مايكروسوفت ايدج (متصفح)
    يبدو أن الحد الأقصى هو 81578 حرفًا. راجع قيود طول عنوان URL لـ Microsoft Edge

  • كروم
    يتوقف عن عرض عنوان URL بعد أحرف 64 كيلو بايت ، ولكن يمكنه عرض أكثر من 100 ألف حرف. لم يتم إجراء المزيد من الاختبارات بعد ذلك.

  • Firefox (المتصفح)
    بعد 65.536 حرفًا ، لم يعد شريط الموقع يعرض عنوان URL في Windows Firefox 1.5.x. ومع ذلك ، ستعمل عناوين URL الأطول. لم يتم إجراء المزيد من الاختبارات بعد 100000 حرف.

  • سفاري (متصفح)
    ما لا يقل عن 80،000 حرف ستعمل. لم يتم تجربة الاختبار بعد ذلك.

  • Opera (المتصفح)
    ما لا يقل عن 190،000 حرف ستعمل. توقف الاختبار بعد 190،000 حرف. واصل Opera 9 for Windows عرض عنوان URL قابل للتحرير بالكامل وقابل للنسخ ولصقه في شريط الموقع حتى على 190،000 حرف.

  • اباتشي (خادم)
    اصطدمت المحاولات المبكرة لقياس الحد الأقصى لطول عنوان URL في متصفحات الويب إلى حد طول عنوان URL للملقم يبلغ 4000 حرف تقريبًا ، وبعد ذلك ينتج Apache خطأ "413 Entity Too Large". تم استخدام الإصدار الحالي من Apache الموجود في Red Hat Enterprise Linux 4. يذكر وثائق Apache الرسمية فقط حد 8،192-بايت في حقل فردي في الطلب.

  • خادم معلومات إنترنت Microsoft (خادم)
    الحد الافتراضي هو 16،384 حرفًا (نعم ، يقبل خادم ويب Microsoft عناوين URL أطول من مستعرض ويب Microsoft). هذا هو شكلي.

  • بيرل HTTP :: الشيطان (الخادم)
    ما يصل إلى 8،000 بايت ستعمل. سيواجه هؤلاء الذين يقومون بإنشاء خوادم تطبيقات الويب مع الوحدة النمطية HTTP :: Daemon Perl بحد أقصى 16،384 بايت على الحجم المجمع لكافة رؤوس طلبات HTTP. لا يشمل ذلك بيانات نموذج طريقة POST ، وتحميلات الملفات ، وما إلى ذلك ، ولكنه لا يتضمن عنوان URL. في الممارسة العملية ، نتج عن ذلك خطأ 413 عندما كان عنوان URL أطول بكثير من 8000 حرف. يمكن إزالة هذا القيد بسهولة. ابحث عن جميع مرات 16x1024 في Daemon.pm واستبدلها بقيمة أكبر. بالطبع ، هذا يزيد من تعرضك لهجمات رفض الخدمة.


انتباه: هذا هو رسم هائل للغاية ومفرط في التبسيط ، بافتراض أبسط طلب HTTP ممكن (لا HTTPS ، لا HTTP2 ، لا إضافات) ، أبسط DNS ممكن ، لا بروكسي ، IPv4 أحادي المكدس ، طلب HTTP واحد فقط ، خادم HTTP بسيط على الطرف الآخر ، ولا توجد مشاكل في أي خطوة. هذا ، بالنسبة لمعظم المقاصد والأغراض المعاصرة ، سيناريو غير واقعي ؛ كل هذه الأمور أكثر تعقيدًا في الاستخدام الفعلي ، وأصبح تكدس التكنولوجيا أمرًا أكثر تعقيدًا منذ كتابة ذلك. مع وضع هذا في الاعتبار ، لا يزال الجدول الزمني التالي صالحًا إلى حد ما:

  1. المستعرض يتحقق ذاكرة التخزين المؤقت؛ إذا كان الكائن المطلوب في ذاكرة التخزين المؤقت وهو جديد ، فانتقل إلى الرقم 9
  2. المتصفح يطلب نظام التشغيل للحصول على عنوان IP للخادم
  3. يقوم نظام التشغيل بإجراء بحث عن DNS ويرد عنوان IP إلى المتصفح
  4. المتصفح يفتح اتصال TCP بالخادم (هذه الخطوة أكثر تعقيدًا باستخدام HTTPS)
  5. يقوم المتصفح بإرسال طلب HTTP عبر اتصال TCP
  6. يتلقى المستعرض استجابة HTTP وقد يقوم بإغلاق اتصال TCP أو إعادة استخدامه لطلب آخر
  7. يقوم المستعرض بالتحقق إذا كانت الاستجابة عبارة عن إعادة توجيه أو استجابة مشروطة (رموز حالة نتيجة 3xx) ، وطلب تخويل (401) ، وخطأ (4xx و 5xx) ، وما إلى ذلك ؛ يتم التعامل مع هذه بشكل مختلف عن الاستجابات العادية (2xx)
  8. في حالة التخزين المؤقت ، يتم تخزين الاستجابة في ذاكرة التخزين المؤقت
  9. متصفح يفك الرد (على سبيل المثال إذا كان gzipped)
  10. متصفح يحدد ما يجب القيام به مع الاستجابة (على سبيل المثال هو صفحة HTML ، هل هو صورة ، هل هو مقطع صوتي؟)
  11. يعرض المتصفح استجابة ، أو يقدم مربع حوار تنزيل لأنواع غير معروفة

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







browser max query-string