এক্সএমএলএইচটিটিপিওরেস্টের পুনঃনির্দেশ রোধ করুন


112

এক্সএমএলএইচটিপিআরকোয়েস্ট-এস প্রেরণ করার সময় ব্রাউজারটি নিম্নলিখিত নির্দেশাবলী থেকে বাধা দেওয়া কি সম্ভব (যেমন পুনঃনির্দেশের স্থিতি কোডটি ফিরে পেতে এবং নিজেই এটি পরিচালনা করতে)?

উত্তর:


102

এক্সএমএলএইচটিপিপিউইকুয়েস্ট অবজেক্টের (জোর দেওয়া যুক্ত) জন্য ডাব্লু 3 সি মান অনুযায়ী নয় :

প্রতিক্রিয়াটি যদি কোনও HTTP পুনর্নির্দেশ হয়:

যদি অবস্থান শিরোনাম দ্বারা প্রদত্ত ইউআরএলটির উত্সটি XMLHttpRequest উত্সের সাথে একই উত্স এবং পুনর্নির্দেশ অসীম লুপ সতর্কতা লঙ্ঘন করে না, একই-উত্স অনুরোধ ইভেন্টের নিয়মগুলি পর্যবেক্ষণ করার সময় স্বচ্ছভাবে পুনঃনির্দেশকে অনুসরণ করুন

তারা এটি ভবিষ্যতের মুক্তির জন্য বিবেচনা করছিল :

এই স্পেসিফিকেশনটিতে নিম্নলিখিত বৈশিষ্ট্যগুলি অন্তর্ভুক্ত নয় যা এই স্পেসিফিকেশনের ভবিষ্যতের সংস্করণের জন্য বিবেচিত হচ্ছে:

  • নিম্নলিখিত পুনঃনির্দেশগুলি অক্ষম করার সম্পত্তি;

তবে সর্বশেষতম উল্লেখটি আর এর উল্লেখ করে না।


5
হাস্যকর বিষয় হ'ল যখন স্বচ্ছ পুনর্নির্দেশের মধ্যে কিছু এইচটিটিপি শিরোনামগুলি মুছে ফেলা হয় যা মূল অনুরোধে সেট করা হয়েছিল। বিশেষত, যদি "স্বীকার করুন" শিরোনামটি নির্দিষ্ট সামগ্রী-প্রকারে সেট করা থাকে তবে ফায়ারফক্স পুনঃনির্দেশের অনুসরণ করার সময় এই শিরোলেখটিকে অন্তর্ভুক্ত করতে ব্যর্থ হয় (যা এই শিরোনামটি ব্যবহার করে পুরোপুরি REST- ভিত্তিক ওয়েব পরিষেবাদি বিকাশ করা আরও কঠিন ... নালিশ)।
রুকেউ

1
আরও কিছু অনুসন্ধান আমাকে এই বরং পুরানো বাগের প্রতিবেদন এনেছে: bugzilla.mozilla.org/show_bug.cgi?id=401564
রুউকে

2
সম্মত, সম্পূর্ণ rediculus ডিজাইন ত্রুটি।
রাসিভ

35

নতুন এপিআই পান সমর্থন পুনর্নির্দেশ হ্যান্ডলিং বিভিন্ন মোড: follow, error, এবং manual, কিন্তু আমি যখন ফেরৎ বাতিল করা হয়েছে নতুন URL বা স্থিতি কোড দেখার জন্য একটি উপায় খুঁজে পাচ্ছি না। আপনি কেবল পুনঃনির্দেশটি নিজেই থামাতে পারেন এবং তারপরে এটি একটি ত্রুটির মতো দেখাচ্ছে (খালি প্রতিক্রিয়া)। আপনার যদি প্রয়োজন হয় তবে আপনি যেতে ভাল। এছাড়াও আপনার সচেতন হওয়া উচিত যে এই এপিআইয়ের মাধ্যমে করা অনুরোধগুলি এখনও বাতিলযোগ্য নয় । তারা হয় এখন।

এক্সএমএলএইচটিএপপিউকুয়েস্ট হিসাবে, আপনি HEADসার্ভারটি দেখতে পারেন এবং URL টি পরিবর্তন হয়েছে কিনা তা পরীক্ষা করতে পারেন :

var http = new XMLHttpRequest();
http.open('HEAD', '/the/url');
http.onreadystatechange = function() {
    if (this.readyState === this.DONE) {
        console.log(this.responseURL);
    }
};
http.send();

আপনি স্থিতি কোডটি পাবেন না, তবে এটি থেকে পুরো পৃষ্ঠাটি ডাউনলোড না করেই নতুন URL খুঁজে পাবেন।


কখনও কখনও ব্যবহার OPTIONSকরা আরও ভাল পছন্দ হতে পারে, যাইহোক কেবল অ সাধারণ উদ্দেশ্যে কাজ করে etc. ইত্যাদি প্রশাসক পুরো সাইট / স্কিমা পুনঃনির্দেশের কনফিগার করেছিলেন যেমন এইচটিটিপি -> এইচটিটিপিএস
উইলিয়াম লেউং

12

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



11

না আপনি XMLHttpRequest দ্বারা উন্মুক্ত API এ এমন কোনও জায়গা নেই যা আপনাকে 301 বা 302 স্বয়ংক্রিয়ভাবে অনুসরণ করার ডিফল্ট আচরণকে ওভাররাইড করতে দেয়।

যদি ক্লায়েন্ট উইন্ডোজগুলিতে আইই চালাচ্ছে তবে আপনি সেই আচরণটি রোধ করার জন্য একটি বিকল্প সেট করার পরিবর্তে WinHTTP ব্যবহার করতে পারেন তবে খুব সীমাবদ্ধ সমাধানের জন্য।

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