দুর্ভাগ্যক্রমে, আপনার প্রাথমিক পৃষ্ঠার অনুরোধের জন্য HTTP প্রতিক্রিয়া শিরোনাম দেওয়ার জন্য কোনও API নেই। এটি এখানে পোস্ট করা মূল প্রশ্ন ছিল। এটি বারবার জিজ্ঞাসা করা হয়েছে , কারণ কিছু লোক অন্য কোনও জারি না করেই মূল পৃষ্ঠার অনুরোধটির আসল প্রতিক্রিয়া শিরোনাম পেতে চান।
এজ্যাক্স অনুরোধগুলির জন্য:
যদি একটি এইচটিপি অনুরোধ যদি এজেএক্সের উপরে করা হয় তবে getAllResponseHeaders()
পদ্ধতিটির সাথে প্রতিক্রিয়া শিরোনাম পাওয়া সম্ভব । এটি XMLHttpRequest API এর অংশ। এটি কীভাবে প্রয়োগ করা যায় তা দেখতে fetchSimilarHeaders()
নীচের ফাংশনটি দেখুন। নোট করুন যে এটি এমন একটি সমস্যা যা প্রায়শই কিছু অ্যাপ্লিকেশনের জন্য নির্ভরযোগ্য নয় to
myXMLHttpRequest.getAllResponseHeaders();
এটি আপনাকে মূল পৃষ্ঠার অনুরোধের এইচটিটিপি রেসপন্স শিরোনাম সম্পর্কে তথ্য দেবে না, তবে এই শিরোলেখগুলি কী ছিল তা সম্পর্কে শিক্ষিত অনুমান করা যায় could তারপরে আরও বর্ণিত হয়েছে।
প্রাথমিক পৃষ্ঠা অনুরোধ থেকে শিরোনামের মানগুলি পাওয়া:
এই পৃষ্ঠাটি প্রথম কয়েক বছর আগে জিজ্ঞাসা করা হয়েছিল, কীভাবে বর্তমান পৃষ্ঠার জন্য মূল HTTP প্রতিক্রিয়া শিরোনামে পাবেন (যেমন জাভাস্ক্রিপ্ট চলছিল একই পৃষ্ঠায়) সম্পর্কে বিশেষভাবে জিজ্ঞাসা করেছিলেন । কোনও HTTP অনুরোধের জন্য কেবল প্রতিক্রিয়া শিরোনাম পাওয়ার চেয়ে এটি একেবারেই আলাদা প্রশ্ন। প্রাথমিক পৃষ্ঠার অনুরোধের জন্য, শিরোনামগুলি জাভাস্ক্রিপ্টে সহজেই উপলভ্য নয়। আপনি যদি এজাজের মাধ্যমে আবার একই পৃষ্ঠাটির জন্য অনুরোধ করেন তবে আপনার প্রয়োজনীয় শিরোনামের মান নির্ভরযোগ্যভাবে এবং পর্যাপ্ত সামঞ্জস্যপূর্ণ কিনা তা আপনার নির্দিষ্ট অ্যাপ্লিকেশনের উপর নির্ভর করবে।
নীচে এই সমস্যাটি প্রায় পেতে পরামর্শ দেওয়া হল।
1. সম্পদের উপর অনুরোধগুলি যা মূলত স্থিতিশীল
যদি প্রতিক্রিয়াটি মূলত স্থিতিশীল থাকে এবং শিরোনামগুলির অনুরোধগুলির মধ্যে খুব বেশি পরিবর্তন ঘটে না এমন প্রত্যাশা করা হয়, আপনি বর্তমানে যে পৃষ্ঠায় রয়েছেন সেই একই পৃষ্ঠার জন্য আপনি একটি এজেএক্স অনুরোধ করতে পারেন এবং ধরে নিতে পারেন যে সেগুলি একই পৃষ্ঠাগুলির অংশ ছিল HTTP প্রতিক্রিয়া। এটি আপনাকে উপরে বর্ণিত সুন্দর XMLHttpRequest API ব্যবহার করে প্রয়োজনীয় শিরোনামগুলি অ্যাক্সেস করার অনুমতি দিতে পারে।
function fetchSimilarHeaders (callback) {
var request = new XMLHttpRequest();
request.onreadystatechange = function () {
if (request.readyState === XMLHttpRequest.DONE) {
//
// The following headers may often be similar
// to those of the original page request...
//
if (callback && typeof callback === 'function') {
callback(request.getAllResponseHeaders());
}
}
};
//
// Re-request the same page (document.location)
// We hope to get the same or similar response headers to those which
// came with the current page, but we have no guarantee.
// Since we are only after the headers, a HEAD request may be sufficient.
//
request.open('HEAD', document.location, true);
request.send(null);
}
আপনি যদি সত্যই অনুরোধগুলির মধ্যে সামঞ্জস্যপূর্ণ মানগুলির উপর নির্ভর করতে হয় তবে এই পদ্ধতির সমস্যা হবে কারণ আপনি সম্পূর্ণরূপে গ্যারান্টি দিতে পারবেন না যে সেগুলি একই। এটি আপনার নির্দিষ্ট অ্যাপ্লিকেশনের উপর নির্ভরশীল এবং আপনি জানেন যে আপনার প্রয়োজনীয় মান এমন কিছু যা এক অনুরোধ থেকে পরেরটিতে পরিবর্তিত হবে না।
২. তথ্যসূত্র তৈরি করুন
আছে কিছু BOM বৈশিষ্ট্য (ব্রাউজার অবজেক্ট মডেল) যা ব্রাউজার হেডার দিকে তাকিয়ে নির্ধারণ করে। এর কয়েকটি বৈশিষ্ট্য সরাসরি HTTP শিরোনামকে প্রতিফলিত করে (যেমন navigator.userAgent
HTTP User-Agent
শিরোনাম ক্ষেত্রের মান হিসাবে সেট করা হয় )। উপলভ্য বৈশিষ্ট্যগুলির চারপাশে স্নিগ্ধ করে আপনি হয়ত প্রয়োজন তা খুঁজে পেতে সক্ষম হতে পারেন বা এইচটিটিপি প্রতিক্রিয়াতে কী রয়েছে তা বোঝাতে কিছু সূত্র খুঁজে পেতে পারেন।
3. তাদের লুকানো
আপনি যদি সার্ভারের দিকটি নিয়ন্ত্রণ করেন তবে আপনি পুরো প্রতিক্রিয়াটি তৈরি করার সময় আপনার পছন্দ মতো কোনও শিরোনাম অ্যাক্সেস করতে পারেন। পৃষ্ঠাগুলি সহ ক্লায়েন্টকে মানগুলি পাঠানো যেতে পারে, কিছু মার্কআপে বা সম্ভবত কোনও ইনিল্যান্ডেড জেএসওএন কাঠামোতে জমা করা হয়েছে। আপনি যদি আপনার জাভাস্ক্রিপ্টের জন্য প্রতিটি এইচটিটিপি অনুরোধ শিরোনাম উপলব্ধ রাখতে চান, আপনি সার্ভারের মাধ্যমে তাদের পুনরাবৃত্তি করতে পারেন এবং মার্কআপে লুকানো মান হিসাবে তাদের ফেরত পাঠাতে পারেন। শিরোনামের মানগুলি এভাবে পাঠানো সম্ভবত আদর্শ নয়, তবে আপনার প্রয়োজনীয় মানটির জন্য আপনি এটি অবশ্যই করতে পারেন। এই সমাধানটি তর্কযোগ্যভাবে অদক্ষও, তবে এটির প্রয়োজন হলে এটি কাজ করবে do