ইন্টারনেটে ব্যবহৃত প্রতিটি সম্পদের একটি মিডিয়া টাইপ থাকে, এটি একটি MIME টাইপ নামেও পরিচিত যা মাল্টিপারপাস ইন্টারনেট মেল এক্সটেনশনকে বোঝায়। সার্ভার এবং ক্লায়েন্টের মধ্যে লেনদেনের জন্য এই তথ্যটি প্রয়োজনীয়৷
ব্রাউজারকে এটিতে পাঠানো মিডিয়া প্রকারের সংস্থানগুলি জানতে হবে যাতে এটি তাদের সঠিকভাবে পরিচালনা করতে পারে৷
একই সার্ভারের জন্য যায়. সঠিক পার্সিং এবং প্রক্রিয়াকরণের জন্য এটিতে পাঠানো সংস্থানগুলির ধরণ জানতে হবে৷
কন্টেন্ট-টাইপ কোথায় ঘোষণা করা হয়?
Content-Type
-এ যেকোন রিসোর্সের মিডিয়া টাইপ ঘোষণা করা হয় অনুরোধ শিরোনামের বৈশিষ্ট্য (ক্লায়েন্টে, সার্ভারে অনুরোধ করার সময়) বা প্রতিক্রিয়া শিরোনামে (সার্ভারে, প্রতিক্রিয়া পাঠানোর সময়)।
কোনো সম্পদের বিষয়বস্তুর ধরন স্পষ্টভাবে ঘোষণা না করে, ক্লায়েন্ট স্বয়ংক্রিয়ভাবে ধরন সনাক্ত করার চেষ্টা করতে পারে, কিন্তু ফলাফল সঠিক নাও হতে পারে। এই কারণেই এটি স্পষ্টভাবে ঘোষণা করা গুরুত্বপূর্ণ।
মিডিয়ার ধরন
মিডিয়ার ধরন বিভিন্ন আকারে বিদ্যমান। তারা বিভিন্ন গ্রুপে শ্রেণীবদ্ধ করা হয়েছে:
- আবেদন
- অডিও
- ফন্ট
- উদাহরণ
- ছবি
- বার্তা
- মডেল
- মাল্টিপার্ট
- পাঠ্য
- এবং ভিডিও
এই বিভাগগুলিরও তাদের প্রকার রয়েছে। উদাহরণস্বরূপ, application/json
application
এর অধীনে একটি প্রকার এবং text/html
text
এর অধীনে একটি প্রকার .
আপনি IANA (ইন্টারনেটের কিছু মূল উপাদানগুলির সমন্বয় করে এমন একটি সংস্থা) মিডিয়া প্রকারের মিডিয়া প্রকারের একটি সম্পূর্ণ তালিকা খুঁজে পেতে পারেন৷
এই সমস্ত প্রকারের বিভিন্ন ধরনের ডেটা যেমন টেক্সট, অডিও, ইমেজ, এইচটিএমএল, এবং আরও অনেক ধরনের যা ইন্টারনেট জুড়ে ব্যবহৃত হয়।
ব্রাউজারকে একটি সংস্থানের মিডিয়া প্রকার জানতে হবে
আমি উপরে উল্লিখিত হিসাবে, ব্রাউজার এটি কি ধরনের সামগ্রী গ্রহণ করে তা জানতে হবে। এটি বোঝানোর জন্য এখানে একটি উদাহরণ দেওয়া হল৷
৷নিম্নলিখিত কোডটি একটি নোড সার্ভার যা একটি HTML ফাইল পরিবেশন করে:
const http = require("http");
const fs = require("fs");
const path = require("path");
const server = http.createServer(function (req, res) {
const filePath = path.join(__dirname, "index.html");
var stat = fs.statSync(filePath);
res.writeHead(200, {
"Content-Type": "text/css",
"Content-Length": stat.size,
});
const readStream = fs.createReadStream(filePath);
readStream.pipe(res);
});
server.listen(5000);
console.log("Node.js web server at port 5000 is running..");
কোডের সুনির্দিষ্ট বিষয়ে চিন্তা করবেন না। আপনি শুধু index.htm
নিয়ে চিন্তিত ফাইলটি আমরা পরিবেশন করছি এবং সেটি Content-Type
হল text/css
.
এখানে index.html
এর বিষয়বস্তু :
<h1>Homepage</h1>
অবশ্যই, একটি HTML নথি একটি CSS ফাইল থেকে আলাদা। এই হল localhost:5000
-এ ফলাফল যখন সার্ভার শুরু হয়:
এছাড়াও আপনি DevTools-এর নেটওয়ার্ক ট্যাবে হেডার চেক করে প্রাপ্ত প্রতিক্রিয়া নিশ্চিত করতে পারেন।
এখানে একটি Chrome ব্রাউজারে ফলাফল:
ব্রাউজারটি একটি CSS প্রকার হিসাবে বিষয়বস্তু পেয়েছে, তাই, এটি এটিকে CSS হিসাবে বিবেচনা করার চেষ্টা করেছে৷
এছাড়াও, মনে রাখবেন যে ব্রাউজার দ্বারা প্রাপ্ত সামগ্রীর প্রকারের সম্পূর্ণ জ্ঞান নিরাপত্তার দুর্বলতাগুলিকেও কমিয়ে দেয় কারণ ব্রাউজার সেই ডেটার জন্য নিরাপত্তা মানগুলি রাখে৷
এখন আপনি MIME প্রকারের ধারণা এবং তাদের গুরুত্ব বুঝতে পেরেছেন, আসুন JSON-এ যাই।
JSON-এর জন্য সঠিক কন্টেন্ট-টাইপ
JSON সঠিকভাবে ব্যবহার করার জন্য ব্রাউজার দ্বারা সঠিকভাবে ব্যাখ্যা করতে হবে। text/plain
সাধারণত JSON-এর জন্য ব্যবহার করা হত, কিন্তু IANA অনুসারে, JSON-এর জন্য অফিসিয়াল MIME প্রকার হল application/json
.
এর মানে হল আপনি যখন সার্ভারে JSON পাঠাচ্ছেন বা সার্ভার থেকে JSON গ্রহণ করছেন, আপনার সর্বদা Content-Type
ঘোষণা করা উচিত হেডারের application/json
হিসাবে যেহেতু এটি এমন মান যা ক্লায়েন্ট এবং সার্ভার বোঝে।
উপসংহার
উপরে উল্লিখিত হিসাবে, সার্ভারকে (ঠিক ব্রাউজারের মতো) এটিতে পাঠানো ডেটার ধরণ জানতে হবে, বলুন, একটি POST অনুরোধে। এটাই হল forms
ফাইলের সাথে সাধারণত enctype
থাকে multipart/form-data
এর মান সহ বৈশিষ্ট্য .
অনুরোধটি এইভাবে এনকোডিং ছাড়া, POST অনুরোধটি কাজ করবে না। এছাড়াও, একবার সার্ভার জানতে পারে যে এটি কী ধরনের ডেটা পেয়েছে, তখন এটি এনকোড করা ডেটা পার্স করতে জানে৷
এই নিবন্ধে, আমরা MIME প্রকার এবং তাদের উদ্দেশ্য কী তা দেখেছি। এছাড়াও, আমরা JSON-এর জন্য অফিসিয়াল কন্টেন্ট টাইপ দেখেছি। আমি আশা করি আপনি এখন জানেন যে কেন ইন্টারনেট ব্যবহার করার সময় সম্পদের ধরন ঘোষণা করা গুরুত্বপূর্ণ।