এইচটিটিপি শিরোনাম কি সংবেদনশীল?


711

একটি ব্লগ পোস্টে আমি প্রতিক্রিয়ার সামগ্রী-ধরণের সেট করতে নিম্নলিখিত পিএইচপি ব্যবহার করি:

header('content-type: application/json; charset=utf-8');

আমি এই পোস্টে সবেমাত্র একটি মন্তব্য পেয়েছি content-typeযেটিকে মূলধন করা দরকার Content-type,। এটা কি সঠিক? মনে হয় এটি সমস্ত নিম্ন-কেস নিয়ে আমার পক্ষে কাজ করে এবং আমি ধরে নিয়েছি এইচটিটিপি শিরোনামগুলি কেস-সংবেদনশীল নয়। বা এটি কেবল ব্রাউজারগুলি দুর্দান্ত বলে কাজ করে?


26
এটি কেস সংবেদনশীল নয়, তবে আপনি যদি কেসটি ঠিক করতে চলেছেন তবে এটি 'বিষয়বস্তুর ধরণ' হওয়া উচিত।
mc0e

10
এফডাব্লুআইডাব্লু, অ্যাপ্লিকেশন / জেসন সহ "চারসেট" পাঠানো অর্থহীন। এরকম কোনও প্যারামিটার নেই।
জুলিয়ান পুনরায় রিচকে

5
@ জুলিয়ানআরস্কে - এটি মিথ্যা, বিষয়বস্তুর ধরণের শিরোনামের মধ্যে চরসেটটি একটি বৈধ প্যারামিটার। দেখুন w3.org/International/articles/http-charset/index এবং developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type
cchamberlain

8
@ নল ইউজারএক্সেপশন - ডাউনসাইড (নষ্ট বাইট বাদে) চারসেট পরম সম্পর্কে লোককে বিভ্রান্ত করে চলেছে। পরিবর্তে components উপাদানগুলি ঠিক করুন।
জুলিয়ান রেসচে

10
@ জুলিয়ানআরস্কে সঠিক IANA আবেদন / JSON নিয়োগ বলেছেন অক্ষরসেট এই মিডিয়া টাইপ জন্য অর্থহীন। এটা কিছুই করে না। দয়া করে এটি যুক্ত করবেন না, কারণ এটি এমন গোলমাল যা অপ্রয়োজনীয় বিভ্রান্তির দিকে নিয়ে যায়।
মনিকা 2331977

উত্তর:


933

শিরোনামের নামগুলি সংবেদনশীল নয়।

আরএফসি 2616 থেকে - "হাইপারটেক্সট স্থানান্তর প্রোটোকল - এইচটিটিপি / 1.1" , বিভাগ 4.2, "বার্তা শিরোনাম" :

প্রতিটি শিরোলেখ ক্ষেত্রের মধ্যে একটি নাম থাকে যার পরে কোলন (":") এবং ক্ষেত্রের মান থাকে। ফিল্ড নাম case- হয় মধ্যে সংবেদনশীল।

আরএফসি 7230 আপডেট করা এই অংশে আরএফসি 2616 থেকে কোনও পরিবর্তন তালিকাভুক্ত করে না ।


95
উত্তরটি এখনও সত্য, আরএফসি 7230 বলেছে: "প্রতিটি শিরোলেখের ক্ষেত্রের ক্ষেত্রে একটি ক্ষেত্রে-সংবেদনশীল ক্ষেত্রের নাম থাকে যার পরে কোলন (": "), leadingচ্ছিক নেতৃস্থানীয় সাদা স্থান, ক্ষেত্রের মান এবং alচ্ছিক পথ অনুসরণ করা হয়।"
মার্টিন মুলার

6
'Apache_request_headers ()' পদ্ধতিটি ব্যবহার করে শিরোনাম ক্ষেত্রের মান পেতে পিএইচপি ব্যবহার করার সময় শিরোনাম ক্ষেত্রগুলি সংবেদনশীল।
ক্ষতি

7
কেউ কি জনপ্রিয় ব্রাউজারগুলির উদাহরণ প্রদান করতে পারে যা এই ক্ষেত্রে অনুমানের সাথে সম্মতি দেয় না?
ডেভিড ডব্লিউ

7
@ হারম কেবল এ কারণেই পিএইচপি-তে স্ট্রিং তুলনা কেস-সংবেদনশীল।
মিঃ হোয়েট

7
যে কারও সন্ধানের জন্য, এখানেই আরএফসি 7230 স্পষ্টভাবে জানিয়েছে যে ফিল্ড শিরোলেখগুলি কেস সংবেদনশীল হিসাবে বিবেচনা করা উচিত: সরঞ্জাম. ietf.org/html/rfc7230#section-3.2
জেজেড

238

আরএফসি 2616 অনুসারে এইচটিটিপি শিরোনামের নামগুলি সংবেদনশীল নয় :

4.2:

প্রতিটি শিরোলেখ ক্ষেত্রের মধ্যে একটি নাম থাকে যার পরে কোলন (":") এবং ক্ষেত্রের মান থাকে। ক্ষেত্রের নামগুলি কেস-সংবেদনশীল।

(ক্ষেত্রের মানগুলি কেস-সংবেদনশীল নাও হতে পারে।)

আপনি যদি প্রধান ব্রাউজারগুলিকে এটি মেনে চলতে বিশ্বাস করেন তবে আপনি সম্পূর্ণ প্রস্তুত।


BTW, HTTP- র অধিকাংশ অসদৃশ, পদ্ধতি (ক্রিয়া) দ্বারা কেস সংবেদনশীল:

5.1.1 পদ্ধতি

মেথড টোকেনটি
অনুরোধ-ইউআরআই দ্বারা চিহ্নিত সংস্থার উপর সঞ্চালিত পদ্ধতিটি নির্দেশ করে । পদ্ধতিটি কেস-সংবেদনশীল।

   Method         = "OPTIONS"                ; Section 9.2
                  | "GET"                    ; Section 9.3
                  | "HEAD"                   ; Section 9.4
                  | "POST"                   ; Section 9.5
                  | "PUT"                    ; Section 9.6
                  | "DELETE"                 ; Section 9.7
                  | "TRACE"                  ; Section 9.8
                  | "CONNECT"                ; Section 9.9
                  | extension-method
   extension-method = token

আরেকটি মন্তব্য বলেছে যে এই উত্তরটি অপ্রচলিত। এটা কি সত্যি? যদি তা হয় তবে সম্ভবত আপনি এটি আপডেট করতে পারেন যাতে লোকেরা বিভ্রান্ত না হয়।
স্পিড প্লেন

36

tldr; HTTP / 1.1 এবং HTTP / 2 শিরোনাম উভয়ই কেস-সংবেদনশীল।

আরএফসি 7230 অনুসারে (HTTP / 1.1):

প্রতিটি শিরোলেখ ক্ষেত্রের মধ্যে একটি কেস-সংবেদনশীল ক্ষেত্রের নাম থাকে যার পরে কোলন (":"), alচ্ছিক নেতৃস্থানীয় সাদা স্থান, ক্ষেত্রের মান এবং valueচ্ছিক ট্রেলিং হোয়াইটস্পেস থাকে।

https://tools.ietf.org/html/rfc7230#section-3.2

এছাড়াও, আরএফসি 7540 (HTTP / 2):

ঠিক যেমন HTTP / 1.x তে, শিরোনামের ক্ষেত্রের নামগুলি ASCII টি
অক্ষরের স্ট্রিং যা কেস-সংবেদনশীল ফ্যাশনে তুলনা করা হয়।

https://tools.ietf.org/html/rfc7540#section-8.1.2


19
কেবল পরিষ্কার করা: মাঠের নামগুলি হ'ল সংবেদনশীল; ক্ষেত্রের নামের উপর নির্ভর করে ক্ষেত্রের মানগুলি কেস-সংবেদনশীল হতে পারে।
জুলিয়ান পুনঃচেক

7
এইচটিটিপি / ২ আরএফসি-র অব্যাহত উদ্ধৃতি: "তবে, এইচটিটিপি / ২-এ এনকোডিংয়ের আগে শিরোনামের ক্ষেত্রের নামগুলি ছোট হাতের মধ্যে রূপান্তরিত করা উচিত u বড় হাতের শিরোনাম ক্ষেত্রের নাম সম্বলিত একটি অনুরোধ বা প্রতিক্রিয়া অবশ্যই ত্রুটিযুক্ত হিসাবে গণ্য হবে (বিভাগ 8.1.2.6)"
বোরেক বার্নার্ড

1
আমি সবেমাত্র লক্ষ্য করেছি "" লোয়ারকেসে রূপান্তরিত হতে হবে ... "অংশটিও। কেন এমন? অনুশীলনে ক্যামেলকেস পছন্দসই কেস হিসাবে প্রতীয়মান হয়েছে (বিকাশকারী সরঞ্জামসমূহ, জনপ্রিয় কোড লাইব্রেরি), সুতরাং কেন এইচটিটিপি / 2 সেই প্রবণতার বিরুদ্ধে যাওয়ার চেষ্টা করবে?
জিম্প

7
@ জিম্প - কারণ মানগুলি ধারাবাহিকতার বিষয়ে - উটের ক্ষেত্রে ব্যবহার করা অস্পষ্ট হতে পারে - বিশেষত সংক্ষেপণ, সূচনা এবং সংক্ষিপ্ত শব্দ সহ। উদাহরণস্বরূপ - এটি কি "ফ্রন্ট-এন্ড-এইচটিপিএস" বা "ফ্রন্ট-এন্ড-এইচটিটিপিএস" - "ডাব্লুডাব্লুডাব্লু-প্রমাণীকরণ" বা "ডাব্লুউউ-প্রমাণীকরণ" - সমস্ত ছোট হাতের ক্ষেত্রকে ক্ষেত্রের মানক করে নির্দিষ্ট করে অস্পষ্টতা সরিয়ে দেয়। এর ফলে চারদিকে শিরোনামগুলি পরিচালনা করা সহজ হয়।
ফ্রেজার 18

16

header('Content-type: image/png') চিত্র প্রবাহে যেমন পাঠ্য হিসাবে দেখানো হয়েছে তেমনই পিএইচপি 5.5- র সাথে কাজ করে নি আইই 11

header('Content-Type: image/png') কাজ হিসাবে, ইমেজ হিসাবে একটি চিত্র হিসাবে হাজির

কেবল পার্থক্য হ'ল মূলধন 'টি'।


18
তারপরে বাস্তবায়নে স্পষ্টতই সমস্যা আছে কারণ সমস্ত শিরোলেখ ক্ষেত্রগুলি কেস-সংবেদনশীল হিসাবে পড়ার কথা। অ্যাপাচি বেঞ্চও গন্ডগোল করেছে। এটি ছোট হাতের ক্ষেত্রের নাম পছন্দ করে না।
বন্ড করুন

8

তারা কেস সংবেদনশীল নয়। প্রকৃতপক্ষে নোডজেএস ওয়েব সার্ভার অনুরোধ অবজেক্টে তাদের উপলব্ধ করার আগে তাদের স্পষ্ট করে লোয়ার-কেসে রূপান্তরিত করে

এখানে লক্ষ্য করা গুরুত্বপূর্ণ যে সমস্ত শিরোনাম কেবল ক্লায়েন্ট তাদের কীভাবে প্রেরণ করেছে তা নির্বিশেষে কেবল কেবল নিম্ন-ক্ষেত্রে প্রদর্শিত হয়। এটি যাইহোক যে কোনও উদ্দেশ্যে শিরোনাম পার্সিংয়ের কাজটিকে সহজতর করে।


এর কারণ নোড / জাভাস্ক্রিপ্ট কেস-সংবেদনশীল, তাই জিনিসগুলিকে সরল করার জন্য তারা সবকিছুকে লোয়ার-কেসগুলিতে স্বাভাবিক করে দেয়, যার অর্থ কার্যকর HTTP শিরোনামগুলি সংবেদনশীল নয়।
Svish

4

এইচটিটিপি জন্য আরএফসি (উপরে উল্লিখিত হিসাবে) নির্দেশ দেয় যে শিরোনামগুলি কেস-সংবেদনশীল নয়, তবে আপনি দেখতে পাবেন যে নির্দিষ্ট ব্রাউজারগুলির সাথে (আমি আপনাকে দেখছি, আইই) এই শব্দটির প্রতিটি শব্দকেই মূলধন বলে মনে হয়:

Location: http://stackoverflow.com

Content-Type: text/plain

বনাম

location: http://stackoverflow.com

content-type: text/plain

এটি "এইচটিটিপি" স্ট্যান্ডার্ড নয়, তবে ব্রাউজারের অন্য এক কীর্তি, আমরা বিকাশকারী হিসাবে, এটি সম্পর্কে ভাবতে হবে।


3
আপনি কি তার কোন প্রমাণ দিতে পারেন?
জুলিয়ান রেশকে

3
আমি একটি কংক্রিট পরীক্ষার কেস বোঝাতে চাইছি; আমার কাছে পরীক্ষা করার জন্য একটি আইই আছে।
জুলিয়ান রিশকে

11
কেন এটি সেরা হতে থাকে?
Svish

আমি এমন একটি ব্রাউজার তৈরি করব যা এলোমেলো মূলধনের সাথে শিরোনামগুলি কেবলমাত্র
দেবদের

0

আনুষ্ঠানিকভাবে, শিরোনামগুলি সংবেদনশীল নয়, তবে প্রতিটি শব্দের প্রথম অক্ষরকে মূলধন করা সাধারণ অনুশীলন।
তবে, কারণ এটি সাধারণ অনুশীলন, IE এর মতো নির্দিষ্ট প্রোগ্রামগুলি শিরোনামকে মূলধন হিসাবে ধরে নিয়েছে।
সুতরাং ডকস বলছেন যে এটি কে সংবেদনশীল নয়, খারাপ প্রোগ্রামাররা মূলত ডক্সকে পরিবর্তন করেছে।


-4

শিরোনাম শব্দটি কেস সংবেদনশীল নয়, তবে ডানদিকে কন্টেন্ট-টাইপের মতো এটিকে এইভাবে লিখতে ভাল অনুশীলন, কারণ এটির কেস সংবেদনশীল। নীচে আমার উদাহরণ মত

headers = headers.set('Content-Type'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.