هي وضعت, حذف, رئيس, الخ الأساليب المتاحة في معظم متصفحات الويب?

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

سؤال

لقد رأيت بضعة أسئلة هنا مثل كيفية تصحيح خدمات مريحة, الذي يذكر:

للأسف نفس المتصفح لن تسمح لي اختبار HTTP وضع, حذف, و إلى درجة معينة حتى HTTP POST.

لقد سمعت أيضا أن المتصفحات تدعم فقط الحصول على وظيفة من بعض المصادر الأخرى مثل:

ومع ذلك ، فإن بعض الاختبارات في فايرفوكس تظهر أن إرسال PUT و DELETE طلبات يعمل كما هو متوقع-فإن XMLHttpRequest إكمال بنجاح على طلب يظهر في سجلات الخادم مع الأسلوب الصحيح.هناك بعض جوانب هذا أنا في عداد المفقودين ، مثل التوافق عبر متصفح أو غير واضحة القيود ؟

هل كانت مفيدة؟

المحلول

لا.على HTML 5 المواصفات يذكر:

طريقة و formmethod المحتوى الصفات هي الصفات المذكورة مع الكلمات الرئيسية التالية كما يلي:

الكلمة الحصول على, ورسم الخرائط أن الدولة تحصل ، مشيرا إلى HTTP الحصول على الأسلوب.طريقة الحصول عليها فقط طلب استرداد البيانات ، يجب أن يكون أي تأثير آخر.

الكلمة بعد, ورسم الخرائط إلى الدولة المنصب, مشيرا إلى أسلوب HTTP POST.The POST طريقة تطلب الخادم يقبل تقديم استمارة البيانات المراد معالجتها ، والتي قد النتيجة في البند يتم إضافتها إلى قاعدة البيانات إنشاء ويب جديد صفحة المورد, تحديث الصفحة الحالية ، ذكر النتائج.

الكلمة الحوار, ورسم الخرائط للدولة الحوار ، مشيرا إلى أن تقديم النموذج يهدف إلى إغلاق مربع الحوار الذي شكل يجد نفسه ، إن وجدت, وإلا لا تقدم.

غير القيمة الافتراضية لهذه الصفات هو على الدولة

أولا-هاء.HTML أشكال الدعم فقط الحصول على و بعد كما طلب HTTP الأساليب.الحل لهذا هو نفق أساليب أخرى من خلال وظيفة باستخدام شكل خفي الميدانية التي يتم قراءتها من قبل الملقم طلب إرسال وفقا لذلك.

ومع ذلك ، الحصول على, بعد, وضع و حذف هي بدعم من تطبيقات مدعوم (أيالمكالمات اياكس) في جميع المتصفحات الرئيسية (IE, Firefox, Safari, Chrome, Opera).

نصائح أخرى

تدعم نماذج HTML GET وPOST.(أضاف HTML5 في مرحلة ما وضع PUT/DELETE، ولكن تم إسقاطهما.)

يدعم XMLHttpRequest كل طريقة، بما في ذلك CHICKEN، على الرغم من أن بعض أسماء الطرق تتم مطابقتها بشكل غير حساس لحالة الأحرف (الطرق حساسة لحالة الأحرف لكل HTTP) وبعض أسماء الطرق غير مدعومة على الإطلاق لأسباب أمنية (على سبيل المثال.يتصل).

تتقارب المتصفحات ببطء وفقًا للقواعد المحددة بواسطة XMLHttpRequest، ولكن كما أشار التعليق الآخر، لا تزال هناك بعض الاختلافات.

XMLHttpRequest هو كائن قياسي في نموذج كائن JavaScript.

وفقا لويكيبيديا، XMLHttpRequest ظهر لأول مرة في Internet Explorer 5 ككائن ActiveX، ولكن منذ ذلك الحين تم تحويله إلى معيار وتم تضمينه للاستخدام في JavaScript في عائلة Mozilla منذ 1.0، وApple Safari 1.2، وOpera 7.60-p1، وIE 7.0.

ال open() طريقة على الكائن يأخذ أسلوب HTTP كوسيطة - ويتم تحديده على أنه يأخذ أي أسلوب HTTP صالح (راجع العنصر رقم 5 من الرابط) - بما في ذلك GET, POST, HEAD, PUT و DELETE, ، مثل المحدد بواسطة RFC 2616.

كملاحظة جانبية يسمح IE 7–8 فقط بطرق HTTP التالية:"GET" و"POST" و"HEAD" و"PUT" و"DELETE" و"MOVE" و"PROPFIND" و"PROPPATCH" و"MKCOL" و"COPY" و"LOCK" و"UNLOCK" و" خيارات".

أعتقد أن هذه التعليقات تشير تحديدًا إلى المتصفحات، أي النقر على الروابط وإرسال النماذج، وليس XMLHttpRequest. XMLHttpRequest هو مجرد عميل مخصص ذلك أنت كتب بلغة JavaScript يستخدم المتصفح كوقت تشغيل.

تحديث:للتوضيح، لم أقصد ذلك (رغم أنني كتبت). أنت كتب XMLHttpRequest;قصدته أنك كتبت الكود الذي يستخدمه XMLHttpRequest.المتصفحات لا تدعم أصلا XMLHttpRequest. XMLHttpRequest يأتي من وقت تشغيل JavaScript، والذي قد يستضيفه المتصفح، على الرغم من أنه ليس من الضروري أن يكون كذلك (انظر وحيد القرن).لهذا السبب يقول الناس أن المتصفحات لا تدعم PUT و DELETE- لأن جافا سكريبت هو الذي يدعمهم بالفعل.

_method الحل البديل للحقل المخفي

يُستخدم في Rails ويمكن تكييفه مع أي إطار عمل:

  • إضافة مخفي _method المعلمة إلى أي نموذج ليس GET أو POST:

    <input type="hidden" name="_method" value="DELETE">
    

    يمكن القيام بذلك تلقائيًا في أطر العمل من خلال طريقة مساعد إنشاء HTML (على سبيل المثال.القضبان form_tag)

  • إصلاح طريقة النموذج الفعلية لـ POST (<form method="post")

  • العمليات _method على الخادم وافعل تمامًا كما لو تم إرسال هذه الطريقة بدلاً من POST الفعلي

الأساس المنطقي / تاريخ سبب عدم إمكانية ذلك: https://softwareengineering.stackexchange.com/questions/114156/why-there-are-no-put-and-delete-methods-in-html-forms

نعم, ، PUT، DELETE، HEAD وما إلى ذلك تتوفر طرق HTTP في جميع المتصفحات الحديثة.

أن تكون متوافقة مع XMLHttpRequest المستوى 2 المتصفحات يجب دعم هذه الأساليب.للتحقق من المتصفحات التي تدعم XMLHttpRequest المستوى 2 أوصي باستخدام CanIUse:

http://caniuse.com/#feat=xhr2

فقط Opera Mini يفتقر إلى دعم أجهزة الصراف الآلي (يوليو 2015)، لكن Opera Mini يفتقر إلى الدعم لكل شيء.:)

فقط للإضافة - من المؤكد أن Safari 2 والإصدارات الأقدم لا تدعم PUT وDELETE.لدي انطباع بأن الرقم 3 قد حدث، لكن لم يعد لدي ما يمكنني اختباره بعد الآن.من المؤكد أن Safari 4 يدعم PUT وDELETE.

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