mode: 'no-cors'
ম্যাজিকভাবে জিনিসগুলি কাজ করবে না। আসলে এটি বিষয়গুলিকে আরও খারাপ করে তোলে, কারণ এর একটি প্রভাবটি ব্রাউজারগুলিকে বলতে হয়, "আমার ফ্রন্টএন্ড জাভাস্ক্রিপ্ট কোডটি সমস্ত পরিস্থিতিতে প্রতিক্রিয়া বডি এবং শিরোনামের বিষয়বস্তুগুলি দেখার থেকে অবরুদ্ধ করুন” " অবশ্যই আপনি এটি কখনই চান না।
ফ্রন্টএন্ড জাভাস্ক্রিপ্টের ক্রস-অরিজিন অনুরোধগুলির সাথে কী ঘটে তা হ'ল ডিফল্টরূপে ব্রাউজারগুলি সংস্থান-উত্স অ্যাক্সেস করা থেকে সীমান্ত কোড অবরুদ্ধ করে। যদি Access-Control-Allow-Origin
কোনও প্রতিক্রিয়া হয় তবে ব্রাউজারগুলি সেই ব্লকিংটি শিথিল করবে এবং আপনার কোডটিকে প্রতিক্রিয়া অ্যাক্সেস করার অনুমতি দেবে।
তবে যদি কোনও সাইট Access-Control-Allow-Origin
তার প্রতিক্রিয়াগুলিতে কোনও প্রেরণ না করে তবে আপনার সীমানা কোডটি সরাসরি সেই সাইট থেকে প্রতিক্রিয়াগুলি অ্যাক্সেস করতে পারে না। বিশেষত, আপনি নির্দিষ্ট করে এটি ঠিক করতে পারবেন না mode: 'no-cors'
(বাস্তবে নিশ্চিত হয়ে যাবে যে আপনার সীমান্ত কোড প্রতিক্রিয়ার সামগ্রীগুলিতে অ্যাক্সেস করতে পারে না)।
তবে, একটি জিনিস যা কাজ করবে : আপনি যদি কোনও অনুরোধটি একটি কর্স প্রক্সি মাধ্যমে প্রেরণ করেন তবে :
var proxyUrl = 'https://cors-anywhere.herokuapp.com/',
targetUrl = 'http://catfacts-api.appspot.com/api/facts?number=99'
fetch(proxyUrl + targetUrl)
.then(blob => blob.json())
.then(data => {
console.table(data);
document.querySelector("pre").innerHTML = JSON.stringify(data, null, 2);
return data;
})
.catch(e => {
console.log(e);
return e;
});
<pre></pre>
দ্রষ্টব্য: আপনি যখন https://cors-anywhere.herokuapp.com ব্যবহার করার চেষ্টা করতে যান, আপনি এটি নীচে পেয়ে গেছেন , আপনি খুব সহজেই হরোকুকে নিজের প্রক্সিটি আক্ষরিক মাত্র ২-৩ মিনিটে 5 কমান্ডের সাহায্যে স্থাপন করতে পারেন:
git clone https://github.com/Rob--W/cors-anywhere.git
cd cors-anywhere/
npm install
heroku create
git push heroku master
এই কমান্ডগুলি চালনার পরে, আপনি আপনার নিজের সিওআরএস যে কোনও জায়গায় যে কোনও সার্ভারের সাথে চলমান সমাপ্ত করবেন, যেমন, https://cryptic-headland-94862.herokuapp.com/ । সুতরাং আপনার অনুরোধটি ইউআরএলটির সাথে https://cors-anywhere.herokuapp.com
উপসর্গ করার পরিবর্তে এটি আপনার নিজের উদাহরণের জন্য ইউআরএলকে উপস্থাপন করুন; উদাহরণস্বরূপ, https://cryptic-headland-94862.herokuapp.com/https://example.com ।
http://catfacts-api.appspot.com/api/facts?number=99
পোস্টম্যানের মাধ্যমে আমি এই শেষ পয়েন্টটি আঘাত করতে পারি
https://developer.mozilla.org/en-US/docs/Web/HTTP/Acecess_control_CORS কেন এটি ব্যাখ্যা করে যে আপনি পোস্টম্যানের মাধ্যমে প্রতিক্রিয়াটি অ্যাক্সেস করতে পারলেও ব্রাউজারগুলি আপনাকে সামনের দিক থেকে প্রতিক্রিয়াটিকে ক্রস-অ্যাসেসে প্রবেশ করতে দেয় না জাভাস্ক্রিপ্ট কোডটি কোনও ওয়েব অ্যাপে চলমান থাকে যদি না প্রতিক্রিয়াটিতে Access-Control-Allow-Origin
প্রতিক্রিয়া শিরোনাম থাকে।
http://catfacts-api.appspot.com/api/facts?number=99 এর কোনও Access-Control-Allow-Origin
প্রতিক্রিয়া শিরোনাম নেই, সুতরাং আপনার সীমানা কোড প্রতিক্রিয়া ক্রস-অরিজিন অ্যাক্সেস করতে পারে এমন কোনও উপায় নেই।
আপনার ব্রাউজারটি প্রতিক্রিয়াটি জরিমানা পেতে পারে এবং আপনি এটি পোস্টম্যান এবং এমনকি ব্রাউজার ডেভোলগুলিতে দেখতে পাবেন — তবে এর অর্থ ব্রাউজারগুলি আপনার কোডটিতে প্রকাশ করবে না। তারা করবে না, কারণ এর কোনও Access-Control-Allow-Origin
প্রতিক্রিয়া শিরোনাম নেই। সুতরাং এটির পরিবর্তে আপনাকে অবশ্যই প্রক্সি ব্যবহার করতে হবে।
প্রক্সিটি সেই সাইটে অনুরোধ করে, প্রতিক্রিয়া পেয়েছে, Access-Control-Allow-Origin
প্রতিক্রিয়া শিরোনাম এবং প্রয়োজনীয় যে কোনও সিওআরএস শিরোলেখ যোগ করে , তা আপনার অনুরোধ কোডটিতে ফিরে যায় passes এবং Access-Control-Allow-Origin
যোগ করা শিরোনামের সাথে সেই প্রতিক্রিয়াটি ব্রাউজারটি যা দেখায় তাই ব্রাউজারটি আপনার সীমান্ত কোডটি আসলে প্রতিক্রিয়াটি অ্যাক্সেস করতে দেয়।
তাই আমি কোনও বস্তুতে প্রবেশের চেষ্টা করছি, আমার আনতে যা CORS অক্ষম করবে
আপনি এটা করতে চান না। স্পষ্টতই, আপনি যখন বলছেন যে আপনি "সিওআরএস অক্ষম" করতে চান তখন মনে হয় আপনার আসলে বোঝানো হচ্ছে আপনি একই-উত্স নীতিটি অক্ষম করতে চান । সিআরএস নিজেই এটি করার একটি উপায় - সিওআরএস একই-উত্স নীতিটি আলগা করার একটি উপায়, এটি সীমাবদ্ধ করার উপায় নয়।
তবে যাইহোক, এটি সত্য যে আপনি করতে পারেন - কেবলমাত্র আপনার স্থানীয় পরিবেশে - সুরক্ষা অক্ষম করতে এবং নিরাপত্তাহীনভাবে চালানোর জন্য আপনার ব্রাউজারকে রানটাইম পতাকা দেওয়া বা একই-উত্স নীতিটি ঘুরে দেখার জন্য আপনি স্থানীয়ভাবে একটি ব্রাউজার এক্সটেনশান ইনস্টল করতে পারেন, তবে যা কিছু তা করে স্থানীয়ভাবে আপনার জন্য পরিস্থিতি পরিবর্তন করা।
আপনি স্থানীয়ভাবে যা বদলে যান না কেন, আপনার অ্যাপ্লিকেশনটি ব্যবহার করার চেষ্টা করা অন্য যে কেউ এখনও একই-উত্স নীতিতে চলতে চলেছে এবং আপনার অ্যাপ্লিকেশনটির অন্যান্য ব্যবহারকারীর পক্ষে এটি অক্ষম করার কোনও উপায় নেই।
আপনি সম্ভবত mode: 'no-cors'
কয়েকটি সীমাবদ্ধ ক্ষেত্রে ব্যতীত অনুশীলনে কখনই ব্যবহার করতে চান না এবং তারপরেও যদি আপনি ঠিক কী জানেন এবং এর প্রভাবগুলি কী তা জানেন। কারণ সেটিংটি mode: 'no-cors'
ব্রাউজারে আসলে যা বলে তা হ'ল, "আমার ফ্রন্টএন্ড জাভাস্ক্রিপ্ট কোডটি সমস্ত পরিস্থিতিতে প্রতিক্রিয়া বডি এবং শিরোনামের সামগ্রীগুলি অনুসন্ধান করা থেকে ব্লক করুন।" বেশিরভাগ ক্ষেত্রে এটি সম্ভবত আপনি যা চান তা সত্য নয়।
যতটা ক্ষেত্রে আপনি যখন ব্যবহারটি বিবেচনা করতে চান mode: 'no-cors'
, উত্তরটি অস্বচ্ছ প্রতিক্রিয়াগুলির ক্ষেত্রে কোন সীমাবদ্ধতা প্রযোজ্য তা দেখুন? বিশদ জন্য। এর সংক্ষিপ্তসারটি হ'ল কেসগুলি হ'ল:
সীমিত ক্ষেত্রে যখন আপনি একটি বিষয়বস্তু অন্য মূল থেকে একটি সম্পদ করতে জাভাস্ক্রিপ্ট ব্যবহার করছেন ইন <script>
, <link rel=stylesheet>
, <img>
, <video>
, <audio>
, <object>
, <embed>
, অথবা <iframe>
উপাদান (যা সম্পদের এম্বেডিং কারণ কাজ করে ক্রশ-অরিজিন তাদের জন্য অনুমতি দেওয়া হয়) - কিন্তু কিছু কারণে আপনি যে দস্তাবেজের মার্কআপ হ'ল সংস্থান URL href
বা src
উপাদানটির জন্য বৈশিষ্ট্য হিসাবে ব্যবহার করতে পারেন তা করতে বা করতে চান না ।
আপনি যখন কেবল কোনও উত্সের সাথে যা করতে চান তা হ'ল ক্যাশে। উত্তরে বর্ণিত হিসাবে অস্বচ্ছ প্রতিক্রিয়ার ক্ষেত্রে কোন সীমাবদ্ধতা প্রযোজ্য? , বাস্তবে প্রযোজ্য দৃশ্যে আপনি যখন পরিষেবা কর্মীদের ব্যবহার করছেন তখন সেই ক্ষেত্রে প্রাসঙ্গিক যে API হ'ল ক্যাশে স্টোরেজ এপিআই ।
তবে সেই সীমিত ক্ষেত্রেও, সচেতন হওয়ার জন্য কয়েকটি গুরুত্বপূর্ণ গোটচ রয়েছে; উত্তরটি দেখুন অস্বচ্ছ প্রতিক্রিয়াগুলির ক্ষেত্রে কোন সীমাবদ্ধতা প্রযোজ্য? বিশদ জন্য।
আমিও বস্তুটিতে পাস করার চেষ্টা করেছি { mode: 'opaque'}
কোনও mode: 'opaque'
অনুরোধ মোড নেই - opaque
পরিবর্তে প্রতিক্রিয়াটির একটি সম্পত্তি এবং ব্রাউজারগুলি no-cors
মোডের সাথে প্রেরিত অনুরোধগুলির প্রতিক্রিয়াগুলিতে অস্বচ্ছ সম্পত্তি সেট করে।
তবে ঘটনাক্রমে অস্বচ্ছ শব্দটি আপনার প্রতিক্রিয়াটির প্রকৃতি সম্পর্কে একটি সুস্পষ্ট স্পষ্ট সংকেত: "অস্বচ্ছ" অর্থ আপনি এটি দেখতে পাচ্ছেন না।
cors-anywhere
সহজ অ শঙ্কু ব্যবহার-ক্ষেত্রে কার্যসংক্রান্ত (অর্থাত আনার কিছু সার্বজনীনরূপে উপলব্ধ তথ্য)। এই উত্তরটি আমার সন্দেহের সত্যতা নিশ্চিত করে যেno-cors
এটি সাধারণ নয় কারণ এর ওপাকেরেস্পোনস খুব কার্যকর নয়; অর্থাত্ "অত্যন্ত সীমাবদ্ধ মামলা"; কেউ কি আমাকে উদাহরণগুলি ব্যাখ্যা করতে পারে যেখানেno-cors
দরকারী?