أقصى طول من إرسال() بيانات المعلمة على آخر مدعوم

StackOverflow https://stackoverflow.com/questions/124742

  •  02-07-2019
  •  | 
  •  

سؤال

هل هناك توثيق ماكس على طول سلسلة البيانات التي يمكن استخدامها في ارسال طريقة غير مدعوم الرئيسية تطبيقات متصفح?

أنا الوقوع في مشكلة مع جافا سكريبت مدعوم بعد فشله في فايرفوكس 3 عندما تكون البيانات قد انتهت تقريبا 3k.لقد كان توليه المنصب أن تتصرف نفس التقليدية شكل آخر.

W3C مستندات ذكر البيانات المعلمة من إرسال الأسلوب هو DOMString ولكن لست متأكدا كيف المتصفحات الرئيسية تنفيذ ذلك.

هنا هو نسخة مبسطة من جافا سكريبت ، إذا bigText أكثر عن 3k فشلت ، وإلا فإنه يعمل...

var xhReq = createXMLHttpRequest();

function createXMLHttpRequest() {
  try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
  try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
  try { return new XMLHttpRequest(); } catch(e) {}
  alert("XMLHttpRequest not supported");
  return null;
}

function mySubmit(id, bigText) {
  var url    = "SubmitPost.cfm";
  var params = "id=" + id + "&bigtext=" + encodeURI(bigText);

  xhReq.open("POST", url, true);

  //Send the header information along with the request
  xhReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xhReq.setRequestHeader("Content-length", params.length);
  xhReq.setRequestHeader("Connection", "close");

  xhReq.onreadystatechange = onPostSubmit;
  xhReq.send(params);
}

function onPostSubmit() {

  if (xhReq.readyState==4 || xhReq.readyState=="complete")
     { 
     if (xhReq.status != 200)
        {
        alert('BadStatus');
        return;
        }
    } 
}
هل كانت مفيدة؟

المحلول

أعتقد أن أقصى طول لا يعتمد فقط على متصفح, ولكن أيضا على ملقم ويب.على سبيل المثال, Apache HTTP server لديه LimitRequestBody التوجيه والذي يسمح في أي مكان من 0 بايت إلى 2 جيجابايت يستحق من البيانات.

نصائح أخرى

وفقا XMLRPC المواصفات, الحقيقي الوحيد حدود على حجم الأعداد الصحيحة و الزوجي.

لم تحدد كيف أنه فشل في ذلك الترميز الخاص بك غير صحيحة.يجب عليك استخدام encodeURIComponent لا encodeURI.

الافتراضي الحد الأقصى لحجم الطلب الكيان على العميل المحتمل محدودة فقط من الذاكرة المتاحة.الخادم كما سبق أن أشار إلى رفض الكيان الهيئات أكثر من حجم معين.IIS 6 و 7 على سبيل المثال يكون 200KB حد افتراضي.

تكوين Nginx يجب أن يتم في client_max_body_size ca أي قيمة أي20m على 20MiB أو تعيين إلى 0 لتعطيل ذلك.

vim /etc/nginx/nginx.conf

حفظ وإغلاق الملف ، تطبيق التغييرات إلى nginx.conf ، ثم اختبار -t و إرسال إشارة -s إلى تحديث:

/usr/sbin/nginx -t
/usr/sbin/nginx -s reload

بناء الجملة:client_max_body_size الحجم ؛

الافتراضي:client_max_body_size 1m;

السياق:http, خادم, موقع

يحدد الحد الأقصى المسموح به لحجم طلب العميل الجسم المحدد في المحتوى "طول" طلب حقل رأس الصفحة.إذا كان حجم طلب يتجاوز تكوين القيمة ، 413 (كيان الطلب كبير جدا) يتم إرجاع خطأ إلى العميل.يرجى أن يكون على علم أن المتصفحات لا يمكن عرض بشكل صحيح هذا الخطأ.تحديد حجم 0 تعطيل التحقق من طلب العميل حجم الجسم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top