জাভাস্ক্রিপ্টে ওয়েব পৃষ্ঠার এইচটিটিপি শিরোনাম অ্যাক্সেস করা


406

আমি কীভাবে জাভাস্ক্রিপ্টের মাধ্যমে কোনও পৃষ্ঠার HTTP প্রতিক্রিয়া শিরোনাম অ্যাক্সেস করব?

এই প্রশ্নের সাথে সম্পর্কিত , যা দুটি নির্দিষ্ট HTTP শিরোনাম অ্যাক্সেস সম্পর্কে জিজ্ঞাসা করতে সংশোধিত হয়েছিল।

সম্পর্কিত:
আমি কীভাবে জাভাস্ক্রিপ্টের মাধ্যমে HTTP অনুরোধ শিরোনাম ক্ষেত্রগুলিতে অ্যাক্সেস করব?


@ ব্যবহারকারী 2284570 - এটি নয়। এই প্রশ্নটি প্রতিক্রিয়া শিরোনাম সম্পর্কে , শিরোনামগুলির অনুরোধ নয় ।
কোয়ান্টিন

উত্তর:


365

বর্তমান শিরোনামগুলি পড়া সম্ভব নয়। আপনি একই ইউআরএলটিতে অন্য একটি অনুরোধ করতে পারেন এবং এর শিরোনামটি পড়তে পারেন, তবে শিরোনামগুলি হুবহু বর্তমানের সমান কিনা এমন কোনও গ্যারান্টি নেই।


একটি getঅনুরোধ সম্পাদন করে সমস্ত HTTP শিরোনাম পেতে নিম্নলিখিত জাভাস্ক্রিপ্ট কোডটি ব্যবহার করুন :

var req = new XMLHttpRequest();
req.open('GET', document.location, false);
req.send(null);
var headers = req.getAllResponseHeaders().toLowerCase();
alert(headers);

58
সা Saeedদ, সম্ভবত প্রশ্ন লেখকের পক্ষে সবচেয়ে ভাল নয় .. আমি অনুমান করি কারণ এটি বোঝা সংস্থানগুলির শিরোনামগুলি অ্যাক্সেস করে না, তবে একটি নতুন অনুরোধ জানায় .. সম্ভবত তিনি সবচেয়ে ভাল জানেন, সেরা উত্তরটি কী এবং তিনি নিজে তৈরি করেছেন
মাইখাল

18
আপনি 'শিরোনাম' ক্রিয়াটি ব্যবহার করতে চাইতে পারেন আপনি কি শিরোনামের উপর নির্ভরশীল।
স্কট্রুডি

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

6
এই হ্যাকটি কিছু পরিস্থিতিতে কাজ করতে পারে তবে স্ক্রিপ্টযুক্ত পৃষ্ঠাটি কোনও পোস্টের অনুরোধের জবাবে উত্পন্ন হয়েছিল এবং এটি সার্ভারের কোনও ত্রুটির মুখোমুখি হয়েছে কিনা তা নির্ধারণ করার চেষ্টা করছেন কিনা তা কার্যকর হবে না it মূল অনুরোধটি প্রক্রিয়া করার সময় (HTTP 5XX)।
মাটিচলা

9
এই উত্তরটি ভয়াবহভাবে ভুল। সঠিক উত্তরটি "এটি সম্ভব নয়"। বা এই উত্তরের সাথে মানিয়ে নিতে "এটি সম্ভব নয়, তবে এটি অনুকরণ করার চেষ্টা করার জন্য একটি হ্যাক এখানে রয়েছে যা আপনার পক্ষে মোটেও কার্যকর বা নাও পারে"।
জানুয়ারী

301

দুর্ভাগ্যক্রমে, আপনার প্রাথমিক পৃষ্ঠার অনুরোধের জন্য 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.userAgentHTTP User-Agentশিরোনাম ক্ষেত্রের মান হিসাবে সেট করা হয় )। উপলভ্য বৈশিষ্ট্যগুলির চারপাশে স্নিগ্ধ করে আপনি হয়ত প্রয়োজন তা খুঁজে পেতে সক্ষম হতে পারেন বা এইচটিটিপি প্রতিক্রিয়াতে কী রয়েছে তা বোঝাতে কিছু সূত্র খুঁজে পেতে পারেন।


3. তাদের লুকানো

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


2
: কিভাবে Google এটি সনাক্ত মত আমি এখানে ব্যাখ্যা stackoverflow.com/questions/7191242/...
kamaci

পুনরায়- আপডেট: Ajax অনুরোধ হিসাবে 2008 সালে ওয়েব ডেভেলপমেন্ট পথ ফিরে একটি প্রমিত অংশ ছিল ভাল -_-
BlueRaja - ড্যানি Pflughoeft

5
বিওএম মানে "ব্রাউজার অবজেক্ট মডেল", যারা ভাবছেন তাদের জন্য। কিছু পটভূমির জন্য stackoverflow.com/questions/2213594/… দেখুন ।
মায়ার্ন স্টল

1
3) আপনি এগুলি এইচপি কুকির শিরোনামেও স্ট্যাশ করতে পারেন। তারপরে আপনাকে ডকুমেন্ট মার্কআপ পরিবর্তন করার প্রয়োজন হবে না।
স্কিবুল্ক

প্রতিক্রিয়া শিরোনামের উপাদানগুলি যেমন লিংক উপাদানটির অ্যাক্সেস করার একটি সহজ উপায় রয়েছে: এখানে নথির উদাহরণটি ব্যবহার করুন: gist.github.com/FunThomas424242/…
FunThomas424242

28

XmlHttpRequestআপনি ব্যবহার করে বর্তমান পৃষ্ঠাটি টানতে পারেন এবং তারপরে প্রতিক্রিয়ার http শিরোনামগুলি পরীক্ষা করতে পারেন।

সর্বাধিক ক্ষেত্রে কেবল একটি HEADঅনুরোধ করা এবং তারপরে শিরোনামগুলি পরীক্ষা করা।

এটি করার কয়েকটি উদাহরণের জন্য http://www.jibbering.com/2002/4/httprequest.html দেখুন

শুধু আমার 2 সেন্ট।


24

পরিষেবা কর্মীদের সাথে একটি সমাধান

পরিষেবা কর্মীরা নেটওয়ার্ক তথ্য অ্যাক্সেস করতে সক্ষম হন, যার মধ্যে শিরোনাম রয়েছে। ভাল অংশটি হ'ল এটি কেবল এক্সএমএলএইচটিপিআরকোস্ট নয়, যে কোনও ধরণের অনুরোধের ভিত্তিতে কাজ করে।

কিভাবে এটা কাজ করে:

  1. আপনার ওয়েবসাইটে একজন পরিষেবা কর্মী যুক্ত করুন।
  2. প্রেরিত প্রতিটি অনুরোধ দেখুন।
  3. পরিষেবা কর্মীকে ফাংশন fetchসহ অনুরোধ করুন respondWith
  4. প্রতিক্রিয়া উপস্থিত হলে শিরোনামগুলি পড়ুন।
  5. postMessageফাংশন সহ পরিষেবা কর্মী থেকে পৃষ্ঠায় প্রেরণ করুন ।

কাজের উদাহরণ:

পরিষেবা কর্মীরা বুঝতে কিছুটা জটিল, তাই আমি একটি ছোট লাইব্রেরি তৈরি করেছি যা এগুলি করে। এটি গিথুবে উপলভ্য: https://github.com/gmetais/sw-get-headers

সীমাবদ্ধতা:

  • ওয়েবসাইটটি এইচটিটিপিএসে থাকা দরকার
  • ব্রাউজারটির পরিষেবা কর্মী এপিআই সমর্থন করা প্রয়োজন
  • XMLHttpRequest এর মতো একই ডোমেন / ক্রস-ডোমেন নীতিগুলি কার্যকর হয়

12

যারা এইচটিটিপি শিরোনামকে এমন একটি বস্তুতে অভিধান হিসাবে অ্যাক্সেস করতে পারে তার বিশ্লেষণের উপায় অনুসন্ধান করার জন্য headers["content-type"], আমি একটি ফাংশন তৈরি করেছি parseHttpHeaders:

function parseHttpHeaders(httpHeaders) {
    return httpHeaders.split("\n")
     .map(x=>x.split(/: */,2))
     .filter(x=>x[0])
     .reduce((ac, x)=>{ac[x[0]] = x[1];return ac;}, {});
}

var req = new XMLHttpRequest();
req.open('GET', document.location, false);
req.send(null);
var headers = parseHttpHeaders(req.getAllResponseHeaders());
// Now we can do:  headers["content-type"]

10

জাভাস্ক্রিপ্টে শিরোনাম সম্পর্কিত তথ্য প্রেরণের অন্য উপায় হ'ল কুকিজের মাধ্যমে। সার্ভারটি অনুরোধ শিরোনামগুলি থেকে প্রয়োজনীয় যাবতীয় ডেটা বের Set-Cookieকরতে পারে এবং প্রতিক্রিয়া শিরোনামের ভিতরে এগুলি আবার পাঠাতে পারে - এবং কুকিজ জাভাস্ক্রিপ্টে পড়তে পারে read কেপারো যেমন বলেছেন, যদিও এটির জন্য কেবল একটি বা দুটি শিরোনামের জন্য এটি করা ভাল।


1
এই পদ্ধতির এখনও আপনার জেএসের জন্য সার্ভার নিয়ন্ত্রণ করা দরকার। আপনি কীভাবে সেই তথ্যটি যোগাযোগ করেন তা বিবেচনা না করেই আপনার কোডটি হঠাৎ করেই অপ্রয়োজনীয় করে তোলা হয়েছে। আসল সম্পত্তির অনুরোধটিকে দূষিত করা এড়াতে কেবল সেই নির্দিষ্ট অনুরোধের জন্য কেন একটি API তৈরি করবেন না?
এমএসটি

5

আমরা যদি অনুরোধ শিরোনাম সম্পর্কে কথা বলছি , এক্সএমএলএইচটিপিআরকোয়েস্টগুলি করার সময় আপনি নিজের শিরোনাম তৈরি করতে পারেন।

var request = new XMLHttpRequest();
request.setRequestHeader("X-Requested-With", "XMLHttpRequest");
request.open("GET", path, true);
request.send(null);

সুরক্ষার কারণে আপনি মোজিলায় অনুরোধ শিরোনামটি সংশোধন করতে পারবেন না। mxr.mozilla.org/mozilla1.8.0/source/extensions/xmlextras/base/…
user121196

1
SetRequestHeader () পদ্ধতিটি ব্যবহার করার আগে আপনাকে অবশ্যই ওপেন () কল করতে হবে। বিকাশকারী.মোজিলা.অর্গ
en/…

1
অ্যাক্সেস, আসল প্রশ্নে, শিরোনাম স্থাপন সম্পর্কে নয়, শিরোনাম সেট করা।
টিমো তিহোফ

4

আপনি HTTP শিরোনাম অ্যাক্সেস করতে পারবেন না, তবে তাদের দেওয়া কিছু তথ্য DOM এ উপলব্ধ। উদাহরণস্বরূপ, আপনি যদি http রেফারার (sic) দেখতে চান তবে ডকুমেন্ট.রেফারার ব্যবহার করুন। অন্যান্য এইচটিপি শিরোনামগুলির জন্য এর মতো অন্যরাও থাকতে পারেন। "HTTP রেফারার জাভাস্ক্রিপ্ট" এর মতো আপনি যে নির্দিষ্ট জিনিসটি চান তা গুগল করার চেষ্টা করুন।

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


4

অনেক লোকের মতো আমিও জাল খনন করেছি আসল কোনও উত্তর নেই :(

তবুও আমি এমন একটি বাইপাস খুঁজে পেয়েছি যা অন্যকে সাহায্য করতে পারে। আমার ক্ষেত্রে আমি আমার ওয়েব সার্ভারটি পুরোপুরি নিয়ন্ত্রণ করি। আসলে এটি আমার আবেদনের অংশ (শেষের রেফারেন্স দেখুন)। আমার HTTP প্রতিক্রিয়াতে একটি স্ক্রিপ্ট যুক্ত করা আমার পক্ষে সহজ। আমি আমার এইচডিএমএল পৃষ্ঠাগুলির মধ্যে একটি ছোট স্ক্রিপ্ট ইনজেক্ট করতে আমার httpd সার্ভারটি পরিবর্তন করেছি ified আমি আমার শিরোনাম নির্মাণের ঠিক পরে অতিরিক্ত 'জেএস স্ক্রিপ্ট' লাইনটি চাপি, এটি আমার ব্রাউজারের মধ্যে আমার দস্তাবেজ থেকে একটি বিদ্যমান পরিবর্তনশীল সেট করে [আমি অবস্থানটি বেছে নিই], তবে অন্য কোনও বিকল্প সম্ভব possible যদিও আমার সার্ভারটি নোডেজে লেখা আছে, আমি সন্দেহ করি না যে পিএইচপি বা অন্যদের কাছ থেকে একই কৌশলটি ব্যবহার করা যেতে পারে।

  case ".html":
    response.setHeader("Content-Type", "text/html");
    response.write ("<script>location['GPSD_HTTP_AJAX']=true</script>")
    // process the real contend of my page

এখন আমার সার্ভার থেকে লোড হওয়া প্রতিটি এইচটিএমএল পৃষ্ঠাগুলি অভ্যর্থনার সময় এই স্ক্রিপ্টটি ব্রাউজার দ্বারা কার্যকর করা হয়েছে। আমি তখন জাভাস্ক্রিপ্ট থেকে সহজেই চেক করতে পারি যদি ভেরিয়েবলটি বিদ্যমান থাকে বা না থাকে। আমার ব্যবহারের ক্ষেত্রে আমাকে জানতে হবে যে কর্স সমস্যা এড়াতে আমার জেএসওএন বা জেএসওএন-পি প্রোফাইল ব্যবহার করা উচিত, তবে একই কৌশলটি অন্য উদ্দেশ্যেও ব্যবহার করা যেতে পারে [যেমন: বিকাশ / উত্পাদন সার্ভারের মধ্যে চয়ন করুন, সার্ভার থেকে একটি আরএসটি / এপিআই পান কী, ইত্যাদি ....]

ব্রাউজারে আপনাকে কেবল আমার উদাহরণ হিসাবে জাভাস্ক্রিপ্ট থেকে সরাসরি ভেরিয়েবল পরীক্ষা করতে হবে, যেখানে আমি আমার জসন / জ্যাকুয়েরি প্রোফাইলটি নির্বাচন করতে এটি ব্যবহার করি

 // Select direct Ajax/Json profile if using GpsdTracking/HttpAjax server otherwise use JsonP
  var corsbypass = true;  
  if (location['GPSD_HTTP_AJAX']) corsbypass = false;

  if (corsbypass) { // Json & html served from two different web servers
    var gpsdApi = "http://localhost:4080/geojson.rest?jsoncallback=?";
  } else { // Json & html served from same web server [no ?jsoncallback=]
    var gpsdApi = "geojson.rest?";
  }
  var gpsdRqt = 
      {key   :123456789 // user authentication key
      ,cmd   :'list'    // rest command
      ,group :'all'     // group to retreive
      ,round : true     // ask server to round numbers
   };
   $.getJSON(gpsdApi,gpsdRqt, DevListCB);

যিনি কখনও আমার কোডটি চেক করতে চান: https://www.npmjs.org/package/gpsdtracking


3

মটুলগুলি ব্যবহার করে আপনি এটি ব্যবহার করতে পারেন


3

আমি সবেমাত্র পরীক্ষা করেছি এবং এটি আমার জন্য ক্রোম সংস্করণ 28.0.1500.95 ব্যবহার করে।

আমার একটি ফাইল ডাউনলোড এবং ফাইলের নাম পড়ার দরকার ছিল। ফাইলের নামটি শিরোনামে রয়েছে তাই আমি নিম্নলিখিতগুলি করেছি:

var xhr = new XMLHttpRequest(); 
xhr.open('POST', url, true); 
xhr.responseType = "blob";
xhr.onreadystatechange = function () { 
    if (xhr.readyState == 4) {
        success(xhr.response); // the function to proccess the response

        console.log("++++++ reading headers ++++++++");
        var headers = xhr.getAllResponseHeaders();
        console.log(headers);
        console.log("++++++ reading headers end ++++++++");

    }
};

আউটপুট:

Date: Fri, 16 Aug 2013 16:21:33 GMT
Content-Disposition: attachment;filename=testFileName.doc
Content-Length: 20
Server: Apache-Coyote/1.1
Content-Type: application/octet-stream

2

সমস্ত প্রতিক্রিয়া শিরোনাম পেতে এটি আমার স্ক্রিপ্ট:

var url = "< URL >";

var req = new XMLHttpRequest();
req.open('HEAD', url, false);
req.send(null);
var headers = req.getAllResponseHeaders();

//Show alert with response headers.
alert(headers);

ফলাফল হিসাবে প্রতিক্রিয়া শিরোনাম।

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

এটি Hurl.it ব্যবহার করে তুলনা পরীক্ষা:

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


2

শিরোনামগুলি হ্যান্ডিয়ার ( রাজার উত্তরের উন্নতি ) হিসাবে একটি বস্তু হিসাবে পেতে

var req = new XMLHttpRequest();
req.open('GET', document.location, false);
req.send(null);
var headers = req.getAllResponseHeaders().toLowerCase();
headers = headers.split(/\n|\r|\r\n/g).reduce(function(a, b) {
    if (b.length) {
        var [ key, value ] = b.split(': ');
        a[key] = value;
    }
    return a;
}, {});
console.log(headers);

2

আল্লায় লালনোয়ের লিঙ্কটি আমার দিনটি তৈরি করেছিল। এখানে কিছু সহজ ওয়ার্কিং এইচটিএমএল কোড যুক্ত করছি।
বয়সী প্লাস IE9 + এবং Presto-Opera 12 থেকে যে কোনও যুক্তিসঙ্গত ব্রাউজারের সাথে কাজ করে।

<!DOCTYPE html>
<title>(XHR) Show all response headers</title>

<h1>All Response Headers with XHR</h1>
<script>
 var X= new XMLHttpRequest();
 X.open("HEAD", location);
 X.send();
 X.onload= function() { 
   document.body.appendChild(document.createElement("pre")).textContent= X.getAllResponseHeaders();
 }
</script>

দ্রষ্টব্য: আপনি দ্বিতীয় অনুরোধের শিরোনাম পান, ফলাফল প্রাথমিক অনুরোধ থেকে পৃথক হতে পারে।


আর একটি উপায়
হ'ল আরও আধুনিক fetch()এপিআই
https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch
per caniuse.com এটি ফায়ারফক্স 40, ক্রোম 42, এজ 14, সাফারি 11
কার্যকারী উদাহরণ দ্বারা সমর্থিত কোড:

<!DOCTYPE html>
<title>fetch() all Response Headers</title>

<h1>All Response Headers with fetch()</h1>
<script>
 var x= "";
 if(window.fetch)
    fetch(location, {method:'HEAD'})
    .then(function(r) {
       r.headers.forEach(
          function(Value, Header) { x= x + Header + "\n" + Value + "\n\n"; }
       );
    })
    .then(function() {
       document.body.appendChild(document.createElement("pre")).textContent= x;
    });
 else
   document.write("This does not work in your browser - no support for fetch API");
</script>

0

এটি একটি পুরানো প্রশ্ন। নিশ্চিত নন যখন সমর্থন আরো বিস্তৃত হয়ে ওঠে, কিন্তু getAllResponseHeaders()এবং getResponseHeader()এখন মোটামুটি মান বলে মনে: http://www.w3schools.com/xml/dom_http.asp


50
getAllResponseHeeda () এবং getResponseHeader () হ'ল এক্সএমএলএইচটিপিআরকিউয়েস্ট অবজেক্টের পদ্ধতি। আইজ্যাক অনুরোধের জন্য। আপনি প্রাথমিক পৃষ্ঠার শিরোনামগুলি দেখার জন্য এই পদ্ধতিগুলি ব্যবহার করতে পারবেন না - যা আমি মনে করি আসল প্রশ্নটি সত্যিই জিজ্ঞাসা করেছিল।
asgeo1

-1

ইতিমধ্যে উল্লিখিত হয়েছে, আপনি যদি সার্ভারের দিকটি নিয়ন্ত্রণ করেন তবে প্রাথমিক প্রতিক্রিয়াতে প্রাথমিক অনুরোধ শিরোনাম ক্লায়েন্টের কাছে ফেরত পাঠানো সম্ভব হবে।

এক্সপ্রেসে, উদাহরণস্বরূপ, নিম্নলিখিত কাজ করে:

app.get('/somepage', (req, res) => { res.render('somepage.hbs', {headers: req.headers}); }) শিরোনামগুলি তখন টেম্পলেটটির মধ্যে পাওয়া যায়, সুতরাং এটি দৃশ্যত লুকানো থাকতে পারে তবে মার্কআপে অন্তর্ভুক্ত থাকতে পারে এবং ক্লায়েন্টাইড জাভাস্ক্রিপ্ট দ্বারা পড়ে read


প্রশ্নটি শিরোনামগুলির অনুরোধ নয়, প্রতিক্রিয়া শিরোনাম সম্পর্কে জিজ্ঞাসা করছে ।
কোয়ান্টিন

-1

আমি মনে করি যে প্রশ্নটি ভুল পথে গেছে, আপনি যদি JQuery / জাভাস্ক্রিপ্ট থেকে অনুরোধ শিরোনাম নিতে চান তবে উত্তরটি সহজভাবে নয় other সমস্ত অনুরোধ এসপেক্স পৃষ্ঠায় নিন এবং একটি সেশন / কুকিজের মধ্যে রাখুন তারপর আপনি জাভাস্ক্রিপ্ট পৃষ্ঠাতে কুকিজ অ্যাক্সেস করতে পারেন ..


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