আমরা কি কাস্টম এইচটিটিপি স্থিতি কোডগুলি তৈরি করতে পারি?


92

আমার কাছে একটি রেস্ট ও ডাব্লুসিএফ পরিষেবা আছে এবং অপারেশনের উপর ভিত্তি করে একটি কাস্টম স্থিতি কোড পাঠাতে চাই।

উদাহরণস্বরূপ যখন কিছু বৈধতা ব্যর্থ হয় তখন আমি HTTP 444 প্রেরণ করতে চাই এবং যখন অনুমোদন ব্যর্থ হয় আমি HTTP 455 প্রেরণ করতে চাই

প্রশ্নটি হল কীভাবে আমরা এটি SOAP এবং REST ওয়েব পরিষেবাদির জন্য বৈধতা দেব?

ক্লায়েন্টে ত্রুটি কোডটি কীভাবে কাজ করে কারণ আপনি যখন কোনও ডাব্লুসিএফ পরিষেবা (এসওএপি ব্যবহার করে) থেকে একটি HTTP 400/500 প্রেরণ করেন তখন স্থিতি কোডটি দেখানো ক্লায়েন্টের উপর একটি ব্যতিক্রম ছুঁড়ে ফেলা হয়।

এখন যদি আমি একটি নতুন কাস্টম স্থিতি কোড প্রেরণ করি তবে ক্লায়েন্ট কীভাবে এটি পরিচালনা করে?


4
এটি কি এমন একটি পরিষেবা যা আপনি বিশ্বের সামনে প্রকাশ করছেন, বা আপনি সমস্ত ক্লায়েন্টকেও নিয়ন্ত্রণ করছেন?
রূপ

উত্তর:


109

হ্যাঁ, আপনি যতক্ষণ শ্রেনীকে শ্রদ্ধা করছেন - এটি, সাফল্যের জন্য 2XX, ক্লায়েন্ট ত্রুটির জন্য 4XX ইত্যাদি So তাই আপনি নিজের অ্যাপ্লিকেশনের ত্রুটি শর্তের জন্য কাস্টম 4XX ত্রুটি কোডগুলি (অগ্রাধিকারযুক্ত যাঁরা নিযুক্ত নয়) ফিরিয়ে দিতে পারেন।

[আরএফসি 2616] থেকে উদ্ধৃতি দিতে: [1]:

"এইচটিটিপি স্থিতি কোডগুলি এক্সটেনসিবল HT এইচটিপিটি অ্যাপ্লিকেশনগুলির সমস্ত নিবন্ধিত স্থিতি কোডগুলির অর্থ বোঝার প্রয়োজন নেই, যদিও এই জাতীয় বোঝাপড়াটি স্পষ্টতই কাম্য However এই শ্রেণীর x00 স্ট্যাটাস কোডের সমতুল্য হিসাবে কোনও অচেনা প্রতিক্রিয়া, একটি অপরিজ্ঞাত প্রতিক্রিয়া ক্যাশে করা উচিত নয় ব্যতীত উদাহরণস্বরূপ, যদি ক্লায়েন্টের দ্বারা 431 এর একটি অপরিজ্ঞাত স্থিতি কোড পাওয়া যায় তবে এটি নিরাপদে ধরে নিতে পারে যে সেখানে ছিল এর অনুরোধে কিছু ভুল হয়েছে এবং প্রতিক্রিয়াটিকে এমন আচরণ করুন যেন এটি একটি 400 টি স্ট্যাটাস কোড পেয়েছে। "

ক্লাস '

  • 1xx: তথ্যবহুল - অনুরোধ প্রাপ্ত, ক্রমাগত প্রক্রিয়া

  • 2XX: সাফল্য - ক্রিয়াটি সফলভাবে প্রাপ্ত, বোঝা এবং গৃহীত হয়েছিল accepted

  • 3xx: পুনঃনির্দেশ - অনুরোধটি শেষ করতে অবশ্যই আরও পদক্ষেপ নেওয়া উচিত

  • 4xx: ক্লায়েন্ট ত্রুটি - অনুরোধটিতে খারাপ সিনট্যাক্স রয়েছে বা এটি পূরণ করা যায় না

  • 5xx: সার্ভার ত্রুটি - সার্ভার একটি আপাতভাবে বৈধ অনুরোধ পূরণ করতে ব্যর্থ হয়েছে [1]:

http://tools.ietf.org/html/rfc2616#section-6.1.1.1


4
পরীক্ষার ব্যতীত নিবন্ধভুক্ত স্থিতি কোডগুলি ব্যবহার করবেন না।
জুলিয়ান রেসকে

4
ক্রিসএনওয়াই: ভাল, আপনি যদি এইচটিটিপি ব্যবহারে নিবন্ধভুক্ত স্থিতি কোডগুলির উপর নির্ভর করেন তবে অন্য কেউ যদি একই উদ্দেশ্যে অন্য কোনও উদ্দেশ্যে একই কোড ব্যবহার করে তবে সেখানে ভাঙন হতে পারে। আপনি আরো বিস্তারিত ত্রুটি তথ্য প্রয়োজন হলে আপনি এখনও পে লোড (উদাহরণস্বরূপ দেখুন এটা এম্বেড করতে পারেন tools.ietf.org/html/draft-nottingham-http-problem-06 )
জুলিয়ান Reschke

21
@ ক্রিসনিওয়াই: বেশিরভাগ ওয়েব অ্যাপ্লিকেশনগুলি একক ক্লায়েন্ট (আপনার জাভাস্ক্রিপ্ট / এজাক্স কোড) এবং একটি সিঙ্গল সার্ভারের (আপনার সার্ভার) সাথে কাজ করার জন্য ডিজাইন করা হয়েছে যাতে কাস্টম স্ট্যাটাস কোড ব্যবহার করা সম্পূর্ণ জরিমানা। এই পরিস্থিতিতে, একই স্থিতি কোডটি ব্যবহার করে 'অন্য কারও'র পক্ষে' ব্রেক্সিট 'ঘটানো এমনকি সম্ভব নয়।
এআর

4
এই উক্তিটি আপনার নিজের কোডগুলি তৈরি করতে পারে না তা বলছে না, এটি বলছে যে আপনার অ্যাপ্লিকেশনটি যতক্ষণ না রেজিস্টার্ড কোড শ্রেণিটিকে শ্রদ্ধা করে এবং 4XX ইত্যাদির জন্য কোনও ত্রুটি ছুঁড়ে দেয় ততক্ষণ তা জানার দরকার নেই aside কেবলমাত্র আমি দেখতে পেলাম যে ভবিষ্যতে এই কোডগুলির মধ্যে একটি আনুষ্ঠানিকভাবে বরাদ্দ পেয়েছে এবং ব্রাউজার / জাভাস্ক্রিপ্ট কার্যকারিতা পরিবর্তন হতে পারে। উদাহরণস্বরূপ 494 ডিডিএনএস আক্রমণ সমস্ত যোগাযোগ বন্ধ করে দেয়, ব্রাউজারটি দেখতে পারে এবং জেএসকে এই আইপিতে আরও কোনও কমস শুরু করতে বাধা দেয়। অত্যন্ত অসম্ভব তবে আপনি 100% হতে পারবেন না, টুইটার মনে করছে 420 আপনার শান্ত বাড়ানো ঠিক আছে
ম্যাট

4
অনুমানটি বলছে আপনি নিজের কোড তৈরি করতে পারেন এবং উদাহরণ হিসাবে 471 কোডটি ব্যবহার করেন। এটি বলেছে যে কোনও অবিখ্যাত 4X ত্রুটি 400 এর সমতুল্য হিসাবে ধরে নেওয়া যায়
জেফ লোয়ার

32

আমি আপনার নিজস্ব HTTP স্থিতি কোডগুলি তৈরি করার বিরুদ্ধে প্রস্তাব দিই, যখন প্রয়োগের কোডগুলি ইতিমধ্যে আপনার উদাহরণগুলিতে করতে চান এমন জিনিসগুলির জন্য উপস্থিত রয়েছে

Https://tools.ietf.org/html/rfc4918#section-11.2 থেকে :

422 [অপ্রসারণযোগ্য সত্তা] স্থিতি কোডটির অর্থ সার্ভারটি অনুরোধ সত্তার সামগ্রীর ধরণটি বোঝে (অতএব একটি 415 [অসমর্থিত মিডিয়া প্রকার] স্থিতি কোড অনুপযুক্ত), এবং অনুরোধ সত্তার বাক্য গঠনটি সঠিক (এইভাবে একটি 400 [খারাপ অনুরোধ ] স্থিতি কোড অনুপযুক্ত) তবে এতে থাকা নির্দেশাবলী প্রক্রিয়া করতে অক্ষম ছিল। উদাহরণস্বরূপ, যদি কোনও এক্সএমএল অনুরোধের শরীরে সু-গঠিত (যেমন সিন্টেক্সটিক্যালি সঠিক) থাকে তবে এই শব্দ ত্রুটিযুক্ত শর্তটি হতে পারে, এক্সএমএল নির্দেশাবলী se

এটি যুক্তিযুক্ত হতে পারে যে "প্রক্রিয়া করতে অক্ষম" বৈধতা ত্রুটির কারণে হতে পারে।


10
অনুমোদন ব্যর্থতা 401 নয় 403 40 403 নিষিদ্ধ, যেখানে অনুমোদন সমস্যা সমাধান করবে না।
নিল হিকম্যান

6
401 ব্যর্থ প্রমাণীকরণ সম্পর্কে (নাম সত্ত্বেও)।
জুলিয়ান রিশকে

4
401 হ'ল "দয়া করে লগইন করুন (আবার)"
কোডসইনচাউস

19

হ্যাঁ আপনি কাস্টম ত্রুটি কোডগুলি যুক্ত করতে পারেন। যদি সম্ভব হয় এমন কোডগুলি ব্যবহার করুন যা ইতিমধ্যে বিদ্যমান রয়েছে এবং আপনি যদি নতুন ঘোষণা করছেন তবে সংঘর্ষ এড়ানোর জন্য সতর্ক থাকুন।

আপনার কিছুটা প্রক্সি অজানা কোডগুলি ফিল্টার করে তবে আপনাকে সচেতন হওয়া উচিত । ব্যবহারকারীদের সাথে আমার সমস্যা ছিল যে প্রক্সির পিছনে যেখানে 5XX কে 500 এবং 4XX থেকে 404 এ ম্যাপ করা হয়েছে This এটি আমার এজাক্সকে কল করেছে যেখানে স্থিতি কোডটি চেক করতে ব্যর্থ হয়েছে।


হ্যাঁ, প্রক্সিগুলি স্তন্যপান করে। আমি প্রক্সি বাস্তবায়ন নামটি জানি না, তবে এটি আমাদের নিজস্ব কাস্টম স্থিতির কোডটি ব্যাখ্যা করে এবং ক্লায়েন্টকে প্রতিক্রিয়া প্রেরণ করে না।
asgs

16

কিছু অ্যাপ্লিকেশন 600-799 সীমাতে তাদের কাস্টম প্রতিক্রিয়া কোড যুক্ত করে। কীনোট থেকে প্রতিক্রিয়া কোডের তালিকাটি এখানে দেখুন

কীনোট সংজ্ঞায়িত ত্রুটি কোডগুলি (600-799)

600: CONNECTION ERROR - This indicates a general connection error
601: INCOMPLETE ERROR - This indicates sever sends an incomplete page/object (as indicated by Content-Length header)
602: UNEXPECTED CLOSE ERROR - This indicates socket connection has been closed unexpectedly
603: REFUSED ERROR - This indicates a request to connect to the server is refused
604: TIMEOUT ERROR - This indicates there is no activity in socket connection in 3 minutes
605: REDIRECT ERROR - This indicates an error in redirect HTTP header
606: SSL ERROR - This indicates a general error in SSL
607: HEADER ERROR - This indicates a malformed HTTP header
608: EMPTY RESPONSE ERROR - This indicates server doesn't send any response after a request is sent
609: UNKNOWN HOST ERROR - This indicates socket receives an unknown host error from DNS
610: NO ROUTE TO HOST ERROR - This indicates a no route to host error was received while attempting to open a socket
611: SOCKET ERROR - This indicates a general socket error
612: FRAME LOOP ERROR - This indicates a page has a frame loop (frame A includes Frame B that includes Frame A)
613: REDIRECT LOOP ERROR - This indicates a page has a redirect loop (page A redirects to page B that redirects to page A)
614: CONNECTION RESET ERROR - This indicates socket receive a reset signal from the server
615: SOCKET PROTOCOL ERROR - This indicates an error in socket protocol
616: SOCKET BIND ERROR - This indicates an error in binding the socket
617: CONNECTION ERROR - This indicates a general socket connection error
618: CHUNK ERROR - This indicates an error in chunked encoding
619: SSL TIMEOUT - This indicates a timeout during SSL handshake (2 minutes)
620: SSL END OF INPUT - This indicates an end-of-file is received during SSL handshake
621: SSL HANDSHAKE ERROR - This indicates a general error during SSL handshake
622: SSL CERTIFICATE ERROR - This indicates an error in SSL certificate verification
623: SSL AUTHENTICATION ERROR - This indicates an authentication error during SSL handshake
624: SSL BAD MAC ERROR - This indicates a bad MAC during SSL handshake
625: SSL CIPHER ERROR - This indicates a cipher error during SSL handshake
701: ERROR TEXT FOUND - This code is returned if any error text (such as, "Service Unavailable") are found in the main page (frame HTML contents included). Note that the error text must be defined in advance of the test. Error text means if the text is found, this session should be considered a failure.
702: REQUIRED TEXT NOT FOUND - This code is returned If not all required texts are found in the main page. Note that required text must be defined in advance of the test. Required text means if the text is not found, this session should be considered a failure.
703: HTML BODY EMPTY - This code is returned if the HTML body of the page is empty (only if error text or required text has been defined).

এটি ভাল অনুশীলন কিনা তা আমি বলতে সাহস করব না, তবে এটি অন্তত একটি আকর্ষণীয় উল্লেখ reference


4
এই মানগুলি অবৈধ, এতে যে এইচটিটিপি স্পেক 100 ... 599 এর বাইরে কোনও কিছুর অনুমতি দেয় না।
জুলিয়ান পুনরায়

16
@ জুলিয়ানআরস্কে আমি এমনকি উল্লেখ করেছি যে আমি "এটি ভাল অনুশীলন কিনা তা বলার সাহস পাই না"। আমি কেবল অন্যান্য অ্যাপ্লিকেশনগুলি কী করে তার একটি উল্লেখ উল্লেখ করি। আমার উত্তরটি ভোটাভুটি করায় কারণ কীনোট অবৈধ স্থিতি কোডগুলি অযৌক্তিক বলে মনে হচ্ছে। আমি কেবল আলোচনাকেই খাওয়াচ্ছি।
উইল্ট করুন

5

এখানে সমস্ত উপলভ্য / অনুপলব্ধ HTTPকোডের সম্পূর্ণ তালিকা এখানে রয়েছে ।

https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml

উদাহরণস্বরূপ, নিম্নলিখিত তীরচিহ্নগুলি 4XXপরিবারে ব্যবহারের জন্য উপলব্ধ (কারণ তারা নিযুক্ত) ।

এখানে চিত্র বর্ণনা লিখুন

আমি আশা করি এটা কারো সাহায্যে লাগবে.

ধন্যবাদ


-12

না, আপনি কেবল আরএফসি ডকুমেন্টেশন প্রয়োজনীয়তা কোড ব্যবহার করতে পারেন, আরএফসি 1945বিশদটি দেখুন


4
আপনি iana.org/assignments/http-status-codes এ সংজ্ঞায়িত কোনও স্থিতি কোড ব্যবহার করতে পারেন ।
জুলিয়ান পুনরায়

@ জুলিয়ান, এর অর্থ কি রাজেশ তার উদ্দেশ্যগুলির জন্য "427-499 নথিভুক্ত" ব্যবহার করতে পারেন?
আইরিশচাইটেফাইন

ঠিক আছে তাহলে :-) আপনি সেই তালিকা থেকে যে কোনও নির্ধারিত স্থিতি কোডটি ব্যবহার করতে পারেন । অথবা আপনি কোনও নতুন স্ট্যাটাস কোডের জন্য একটি স্পেসিফিকেশন লিখুন এবং এটি নিবন্ধভুক্ত করুন।
জুলিয়ান পুনরায়

4
প্রযুক্তিগতভাবে আপনি যা খুশি তা ব্যবহার করতে পারেন। এটি অন্য কারও সাথে ভাল খেলে আশা করবেন না। ওপিতে যেমন বলা হয়েছিল - রাজেশ যদি সমস্ত ক্লায়েন্টকে নিয়ন্ত্রণ করেন তবে তিনি তাদের বোঝাতে পারেন "1337 - আপনার সমস্ত ভিত্তি আমাদের অন্তর্ভুক্ত" এটি তারা খুশি please ;)
কর্নেলিয়াস

4
আপনি HTTP / 1.0 স্থিতি কোডগুলির সাথে লিঙ্ক করেছেন, যা 90 এর দশকের গোড়ার দিকে ব্যবহার করা হয়নি।
অ্যান্ডেন্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.