বেশিরভাগ ওয়েব ব্রাউজারে কি পুট, ডিলেট, হেড ইত্যাদি পদ্ধতি পাওয়া যায়?


608

আমি এখানে প্রায় কয়েকটি দর্শন দেখেছি যেমন কীভাবে RESTful পরিষেবাদিগুলি ডিবাগ করা যায় , যার মধ্যে উল্লেখ রয়েছে:

দুর্ভাগ্যক্রমে একই ব্রাউজারটি আমাকে এইচটিটিপি পুট, ডিলিট এবং একটি নির্দিষ্ট ডিগ্রি এমনকি এইচটিটিপি পোস্ট পরীক্ষার অনুমতি দেবে না।

আমি আরও শুনেছি যে ব্রাউজারগুলি কেবল অন্য কিছু উত্স থেকে যেমন GET এবং পোস্ট সমর্থন করে:

তবে ফায়ারফক্সের কয়েকটি দ্রুত পরীক্ষায় দেখা গেছে যে প্রেরণ PUTএবং DELETEঅনুরোধগুলি প্রত্যাশার মতো কাজ করে - XMLHttpRequestসফলতার সাথে সমাপ্ত হয় এবং অনুরোধটি সঠিক পদ্ধতিতে সার্ভার লগগুলিতে প্রদর্শিত হয়। আমি অনুপস্থিত এর কিছু দিক রয়েছে যেমন ক্রস ব্রাউজারের সামঞ্জস্যতা বা অ-স্পষ্ট সীমাবদ্ধতা?


1
এটি কেবল যে ক্লায়েন্টকে আপনাকে চিন্তিত হতে হবে তা নয়, প্রচুর সার্ভার সাইড ফ্রেমওয়ার্ক কেবল জিইটি এবং পোস্ট সমর্থন করে।
ডার্বি

7
জন, কোনও কারণে আপনি বিশ্রামের ট্যাগটি চান না?
জন সাউন্ডারস

11
যদিও যারা এটি পড়েন তারা সম্ভবত RESTful API গুলি তদন্ত করছেন।
djjeck


না, সমস্ত ব্রাউজার PUT / DELETE পদ্ধতিগুলিকে সমর্থন করে না, এবং সমস্ত সার্ভার সাইড প্রযুক্তিগুলি পুট / মোছা সমর্থন করে না। কেবল এইচটিএমএল 5 সমর্থিত ব্রাউজারই পুট / ডিলিট সমর্থন করে।
জানি দেবাং

উত্তর:


463

না। এইচটিএমএল 5 টি অনুচ্ছেদে উল্লেখ রয়েছে:

পদ্ধতি এবং ফর্মমেডো বিষয়বস্তু বৈশিষ্ট্যগুলি নিম্নোক্ত কীওয়ার্ডগুলির সাথে অঙ্কিত বৈশিষ্ট্যগুলি উল্লেখ করে:

কীওয়ার্ডটি পাবেন , রাষ্ট্রের জিইটি-তে ম্যাপিং, এইচটিটিপি জিইটি পদ্ধতিটি নির্দেশ করে। জিইটি পদ্ধতিতে কেবল ডেটা অনুরোধ করা এবং পুনরুদ্ধার করা উচিত এবং এর অন্য কোনও প্রভাব থাকতে হবে না।

কীওয়ার্ড পোস্ট , রাষ্ট্রের পোস্টে ম্যাপিং, এইচটিটিপি পোস্টের পদ্ধতিটি নির্দেশ করে। POST পদ্ধতিটি অনুরোধ করে যে সার্ভারটি জমা দেওয়া ফর্মের ডেটা প্রক্রিয়া করার জন্য স্বীকার করে, যার ফলে কোনও আইটেম একটি ডেটাবেজে যুক্ত হতে পারে, একটি নতুন ওয়েব পৃষ্ঠার উত্স তৈরি করতে পারে, বিদ্যমান পৃষ্ঠায় আপডেট হতে পারে বা উল্লিখিত সমস্ত ফলাফলকেই ।

কীওয়ার্ড ডায়লগ , রাষ্ট্রের ডায়ালগটিতে ম্যাপিং, ফর্মটি জমা দেওয়ার উদ্দেশ্যটি সেই ডায়ালগ বাক্সটি বন্ধ করার উদ্দেশ্যে, যেখানে ফর্মটি নিজেকে খুঁজে পায়, যদি থাকে এবং অন্যথায় জমা দেয় না।

এই বৈশিষ্ট্যের জন্য অবৈধ মান ডিফল্ট হ'ল জিইটি স্টেট

এইচটিএমএল ফর্মগুলি কেবল এইচটিটিপি অনুরোধ পদ্ধতি হিসাবে জিইটি এবং পোষ্টকে সমর্থন করে। এটির জন্য একটি কার্যপ্রণালী হ'ল পোস্টের মাধ্যমে অন্য পদ্ধতিগুলি একটি লুকানো ফর্ম ক্ষেত্রটি ব্যবহার করে সুড়ঙ্গ করা যা সার্ভার দ্বারা পড়া হয় এবং অনুরোধটি ততক্ষণে প্রেরণ করা হয়।

যাইহোক, তাহলে GET , POST এর , PUT এবং মুছে দিন হয় সমস্ত প্রধান ওয়েব ব্রাউজার (অর্থাত, ফায়ারফক্স, সাফারি, ক্রোম, অপেরা) এ XMLHttpRequest- এর এর বাস্তবায়নের (অর্থাত AJAX এর কল) দ্বারা সমর্থিত।


170
না, আমি অবশ্যই এইচটিএমএলকে বোঝাচ্ছি (আমি এইচটিএমএল ফর্মের দক্ষতার কথা বলছি যদিও এটি পাঠ্য থেকে পরিষ্কার নয় - আমি এটি সম্পাদনা করব)
ম্যাথিউ মারডোক

6
@ ম্যাথুজ: এর অর্থ কি এই যে আমি নীচের সাথে আইই 6 বা আই 7 ব্যবহার করি: - <ফর্ম .. পদ্ধতি = "পুট"> ... </ translation> এটি কার্যকর হবে না কারণ পিইটি এইচটিএমএল 4 এর জন্য বৈধ নয়?
বিশুদ্ধ.ক্রোম

6
@ পিওর.ক্রোম (মাত্র 14 মাস পরে) না, আপনি এইচটিএমএল 4.01 স্পেসের অধীনে <ফর্ম পদ্ধতি = "করা"> বা <ফর্ম পদ্ধতি = "মুছুন"> করতে পারবেন না। কেবল জিইটি এবং পোষ্টই আইই 8, ক্রোম 3 বা এফএফ 3.5 সমর্থন করে।
জেরেট মেয়ার

23
@ পার্নেল @ অ্যালান এইচটিএমএল 5 এগুলি যুক্ত করেছে এবং তারপরে সেগুলি সরিয়ে দিয়েছে। বর্তমানে কেবল জিইটি এবং পোষ্টের অনুমতি রয়েছে। goo.gl/8EuZk
অ্যাডাম লাসেক

13
@ পার্নেল এইচটিএমএল 5 এগুলি যুক্ত করেছে এবং তারপরে সেগুলি সরিয়ে ফেলেছে এবং এখন বাগটি আবার খোলা হয়েছে। মজার বিষয় হল, আমি এমন কিছু ডকুমেন্টেশন দেখেছি যা সেগুলিতে এখনও রয়েছে। আপনি যদি ঘরে বসে অনুসরণ করতে চান তবে এখানে বাগটি দেখুন: w3.org/Bugs/Public/show_bug.cgi?id=10671
এমিল লারচ

79

এইচটিএমএল ফর্মগুলি জিইটি এবং পোস্টকে সমর্থন করে। (এইচটিএমএল 5 এক পর্যায়ে পুট / ডিলিট যুক্ত করেছে তবে সেগুলি বাদ দেওয়া হয়েছে))

XMLHttpRequest চিকেন সহ প্রতিটি পদ্ধতি সমর্থন করে, যদিও কিছু পদ্ধতির নাম কেস-সংবেদনশীলতার সাথে মেলে (পদ্ধতিগুলি এইচটিটিপি প্রতি কেস-সংবেদনশীল) এবং কিছু পদ্ধতির নাম সুরক্ষার কারণে কিছুটা সমর্থিত নয় (যেমন সংযোগ)।

ব্রাউজারগুলি ধীরে ধীরে এক্সএমএলএইচটিপিআরকোয়েস্ট দ্বারা নির্দিষ্ট করা বিধিগুলিতে রূপান্তরিত হচ্ছে, তবে অন্য মন্তব্যটি হিসাবে উল্লেখ করা হয়েছে যে এখনও কিছু পার্থক্য রয়েছে।


5
সর্বশেষতম এইচটিএমএল 5 খসড়াটি পুট
স্টেফান তিলকভ

3
এগুলি ফিরিয়ে আনার জন্য একটি খসড়া প্রস্তাব করা হয়েছে: amundsen.com/example/put-delete-forms
Joost Baaij

26
চিকেন? পাখি? আমি মনে করি আপনি চেক্কিন বোঝাচ্ছেন। এটি একটি মজার স্বর বদল।
জয়সি

52
না আমি চিকেন বলতে চাইছি এটি চিত্রিত করে যা আপনার পছন্দ মতো হতে পারে be স্বরবর্ণের অদলবদলটি মজাদার হওয়ার বিষয়ে সম্মত হয়েছে :-)
অ্যান

6
.... আমি এই মুরগির ব্যবসার সঙ্গে ছিল ঠিক যেমন হতবাক তাদের জন্য w3c-test.org/XMLHttpRequest/open-method-case-sensitive.htm
n0nag0n

43

XMLHttpRequest জাভাস্ক্রিপ্ট অবজেক্ট মডেলের একটি মানক বস্তু।

উইকিপিডিয়া অনুসারে, XMLHttpRequestপ্রথম ইন্টারনেট এক্সপ্লোরার 5 এ অ্যাক্টিভএক্স অবজেক্ট হিসাবে হাজির হয়েছিল, তবে এটি একটি মান হিসাবে তৈরি করা হয়েছে এবং এটি মোজিলা পরিবারে জাভাস্ক্রিপ্টে ব্যবহারের জন্য 1.0, অ্যাপল সাফারি 1.2, অপেরা 7.60-পি 1 এবং আই 7.0 থেকে অন্তর্ভুক্ত করা হয়েছে Wikipedia ।

open()পদ্ধতি বস্তুর উপর একটি আর্গুমেন্ট হিসাবে HTTP- র পদ্ধতি লাগে - এবং কোনো বৈধ HTTP- র পদ্ধতি (লিংক আইটেমটি সংখ্যা 5 দেখুন) গ্রহণ হিসাবে নির্দিষ্ট করা হয় - সহ GET, POST, HEAD, PUTএবং DELETE, যেমন বোঝায় যা RFC 2616 দ্বারা নির্দিষ্ট

সাইড নোট হিসাবে IE 7–8 কেবল নিম্নলিখিত HTTP পদ্ধতিগুলির অনুমতি দেয়: "GET", "পোস্ট", "শিরোনাম", "পুট", "মোছা", "সরান", "PROPFIND", "PROPPATCH", "MKCOL" , "কপি", "লক", "আনলক করুন", এবং "বিকল্পগুলি"


7
আমি আরও পড়ার জন্য ডকুমেন্টেশনের কিছু টুকরো দেখার আশাবাদী, আমি আপনাকে বিশ্বাস করি না বলে বলি না। উইকিপিডিয়ায় লিঙ্কগুলি আসলে বেশ দুর্দান্ত। ধন্যবাদ
নাগতুর

19

_method লুকানো ক্ষেত্র workaround

কারাগারে ব্যবহৃত হয় এবং যে কোনও কাঠামোর সাথে মানিয়ে নেওয়া যেতে পারে:

  • _methodGET বা পোস্ট নয় এমন কোনও ফর্মের সাথে একটি লুকানো প্যারামিটার যুক্ত করুন :

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

    এইচটিএমএল তৈরি সহায়তা সহায়ক পদ্ধতির মাধ্যমে ফ্রেমওয়ার্কগুলিতে এটি স্বয়ংক্রিয়ভাবে করা যেতে পারে (উদাহরণস্বরূপ রেলস form_tag)

  • প্রকৃত ফর্ম পদ্ধতিটি পোস্ট করুন ( <form method="post")

  • _methodসার্ভারে প্রক্রিয়া করে এবং ঠিক সেই পদ্ধতিটি করে যেমন প্রকৃত পোস্টের পরিবর্তে সেই পদ্ধতিটি প্রেরণ করা হয়েছিল

কেন এটি সম্ভব নয় এর যুক্তি / ইতিহাস: /software/114156/why-there-are-no-put-and-delete-methods-in-html-forms


সান্তিলি, হাই হাই ডুড ভাল আপনি যখন এই সমাধানটি দিয়েছেন তখন অনেক দিন হয়ে গেছে, এবং যেহেতু আমি ওয়েব বিকাশের একটি শিক্ষানবিশ, আমার একটি প্রশ্ন রয়েছে যা আশা করি আপনি উত্তর দেবেন। সুতরাং, আপনি বলেছিলেন যে "সার্ভারে প্রক্রিয়া _ thodতিহ্যগতভাবে ঠিক সেই পদ্ধতিটি প্রেরণ করা হয়েছে যা প্রকৃত পোস্টের পরিবর্তে প্রেরণ করা হয়েছিল" আপনি বোঝাতে চেয়েছিলেন যে যদি পুট (বা মুছে ফেলা) সহ লুকানো পদ্ধতিটি ভিউতে রাখা হয় তবে এটির অর্থ আসলে পুট (বা মুছে ফেলুন) অনুরোধ ঠিক আছে? যদি হ্যাঁ তবে ভিক্ষার সময় কেন POST পদ্ধতিটি ব্যবহার করবেন এবং তারপরে লুকানো পুট বা ডিলেট ব্যবহার করবেন। কি পোস্ট করেছেন এবং রাখুন (বা মুছতে) মধ্যে সংযোগ :)
Mirich

1
@ মিরিচ ফর্মটি কেবলমাত্র পোষ্টকে সমর্থন করে। সুতরাং আমরা অতিরিক্ত ডেটা সহ পোষ্টটি প্রেরণ করি, যা সার্ভারটি জানে এর অর্থ: আহা, আমার এটি একটি পুটের মতো আচরণ করা উচিত।
সিওরো সান্তিলি 24 冠状 病 六四 事件

আপনার মনোযোগ এবং জবাব দেওয়ার জন্য আপনাকে ধন্যবাদ কিরো, তাই আমি এই দৃশ্যের বিষয়টি এইভাবে বিবেচনা করতে পারি: পোস্ট একটি সার্বজনীন জিনিস যা নিজের ভিতরে প্রকৃত পোষ্ট, পুট, প্যাচ এবং মুছে ফেলে এবং যদি আপনি গোপন ছাড়াই পোষ্টটি শুরুতে ব্যবহার করেন তবে এটি আসল অর্থ হতে পারে পোস্ট। তবে আপনি যদি লুকানো (পুট বা মুছে ফেলুন) দিয়ে পোষ্ট ব্যবহার করেন তবে আপনি সার্ভারকে জানাতে পারেন যে আপনি পোস্টের ভিতরে থাকা পুট বা ডিলেট ব্যবহার করতে চান যা তার ভিতরে থাকা শিশুদের হিসাবে আমি কিছুটা অদ্ভুত উপমা জানি তবে এটি কি সঠিক? :)
24:38 মিরিচ

1
@ মিরিখ হ্যাঁ, আমার ধারণা আপনি এই ধারণাটি অর্জন করেছেন।
সিরো সান্তিলি 郝海东 冠状 病 六四 事件

দুঃখিত সিরো ঠিক শেষ কথা, আমি অবাক হয়েছি কেন পুট এবং ডিলিটকে HTML5 থেকে অপসারণ করা হয়েছে কেননা আপনি যদি ফর্ম ট্যাগের শুরুতে কেবল পুট বা মুছে ফেলতে এবং গোপন ব্যবহার না করতে পারেন তবে এটি আরও ভাল না। দয়া করে আপনি শীঘ্রই এবং পরিষ্কারভাবে ব্যাখ্যা করতে পারেন যে পুট এবং ডিলিট অপসারণের আসল কারণটি ছিল। অগ্রিম ধন্যবাদ :)
মরিচ

15

আমি বিশ্বাস করি যে এই মন্তব্যগুলি বিশেষত ব্রাউজারগুলিকে বোঝায়, অর্থাত্ লিঙ্কগুলি ক্লিক করে এবং ফর্মগুলি জমা দেয়, তা নয় XMLHttpRequestXMLHttpRequestএটি কেবলমাত্র একটি কাস্টম ক্লায়েন্ট যা আপনি জাভাস্ক্রিপ্টে লিখেছেন যা ব্রাউজারটিকে রানটাইম হিসাবে ব্যবহার করে।

আপডেট: স্পষ্ট করার জন্য, আপনি যেটা লিখেছেন তা আমি বোঝাতে চাইনি (যদিও আমি লিখেছিলাম ) XMLHttpRequest; আমি বোঝাতে চাইছি আপনি কোডটি ব্যবহার করেছেন যা ব্যবহার করে XMLHttpRequest। ব্রাউজারগুলি স্থানীয়ভাবে সমর্থন করে না XMLHttpRequestXMLHttpRequestজাভাস্ক্রিপ্ট রানটাইম থেকে আসে, যা ব্রাউজার দ্বারা হোস্ট করা যেতে পারে, যদিও এটি হওয়ার দরকার নেই ( রাইনো দেখুন )। এ কারণেই লোকেরা বলে যে ব্রাউজারগুলি সমর্থন করে না PUTএবং DELETEকারণ এটি আসলে জাভাস্ক্রিপ্ট তাদের সমর্থন করে।


এক্সএমএলএইচটিপিআরকোয়েস্ট জাভাস্ক্রিপ্ট অবজেক্ট মডেলের একটি স্ট্যান্ডার্ড অবজেক্ট।
জ্যাকব কুলরে

9
@ জ্যাকব ট্রু, তবে বিভিন্ন ব্রাউজারে বিভিন্ন জাভাস্ক্রিপ্ট ইঞ্জিন রয়েছে। কোনটি PUT সমর্থন করে তা জেনে রাখা এখনও সহায়ক।
সেনফো

1
it's actually JavaScript that is supporting them। সত্যিই সত্য নয়। XMLHttpRequestএকটি 'হোস্ট-অবজেক্ট', যার অর্থ এটি এমন একটি বস্তু যা হোস্ট থেকে জাভাস্ক্রিপ্ট কোডে কার্যকারিতা প্রকাশ করে। এটি নিজে জেএসের একটি অংশ নয়।
স্টিজন ডি উইট

9

হ্যাঁ , পুট, মোছা, হেড ইত্যাদি এইচটিটিপি পদ্ধতিগুলি সমস্ত আধুনিক ব্রাউজারে উপলব্ধ।

এক্সএমএলএইচটিপিপিউইকুয়েস্ট লেভেল 2 ব্রাউজারের সাথে সামঞ্জস্যপূর্ণ হতে এই পদ্ধতিগুলি সমর্থন করতে হবে । কোন ব্রাউজারগুলি XMLHttpRequest স্তর 2 সমর্থন করে তা পরীক্ষা করতে আমি CanIUse এর প্রস্তাব দিই:

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

কেবল অপেরা মিনিতে সমর্থনের এটিএম (জুলাই '15) এর অভাব রয়েছে তবে অপেরা মিনিতে সমস্ত কিছুর জন্য সমর্থন নেই। :)


7

কেবল যুক্ত করতে - সাফারি 2 এবং এর আগে অবশ্যই পুট এবং মুছে ফেলা সমর্থন করে না। আমি 3 টি ইমপ্রেশন পেয়েছি তবে আমার কাছে এটি আর পরীক্ষার মতো নেই। সাফারি 4 অবশ্যই পুট এবং মোছা সমর্থন করে।


5
সাফারির কোন সংস্করণ পুট এবং ডিলিটের জন্য সমর্থন পেয়েছে তা কি কেউ নিশ্চিত করতে পারেন?
এমজেএস

1
এখনই সমস্ত ব্রাউজারগুলি পুট & মুছে ফেলা সমর্থন করে - এবং প্রায় কতক্ষণ এটি উপলব্ধ রয়েছে তা যদি কেউ বিশদ বর্ণনা করতে পারে। "চিকেন" উদাহরণটির দিকে লক্ষ্য করা, এর অর্থ কী এটির পুরোপুরি সার্ভারের উপর নির্ভর করে কোন পদ্ধতিটি ব্যবহৃত হয় তা ব্যাখ্যা করা এবং জাভাস্ক্রিপ্ট পদ্ধতিটির ধরণকে সীমাবদ্ধ করে না ...?
কোডি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.