অস্বচ্ছ প্রতিক্রিয়া কী এবং এটি কোন উদ্দেশ্যে কাজ করে?


172

আমি fetchএকটি পুরানো ওয়েবসাইটের ইউআরএল চেষ্টা করেছি , এবং একটি ত্রুটি ঘটেছে:

Fetch API cannot load http://xyz.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://abc' is therefore not allowed access.
If an opaque response serves your needs, set the request's mode to 'no-cors'
to fetch the resource with CORS disabled.

আমি বার্তাটি বুঝতে পেরেছি, এবং একটি অনুরোধ করার চেষ্টা করেছি যা একটি অস্বচ্ছ প্রতিক্রিয়া ফেরায়:

fetch("http://xyz", {'mode': 'no-cors'})

ঠিক আছে, এটি এখন কাজ করে ... তবে আমি এটি পড়তে পারি না। = \

অস্বচ্ছ প্রতিক্রিয়ার তখন কী উদ্দেশ্য?

উত্তর:


149

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

এই জন্য { mode: 'no-cors' }তৈরি করা হয়েছিল।


2
তবে Status codeসর্বদা 0, কিভাবে সফল ছিল কিনা তা যাচাই করবেন status is never 200?
আংশুমন আগরওয়াল

3
তুমি পার না. এটি ব্ল্যাকবক্সের অংশ ।
সালভা

67

অস্পষ্ট প্রতিক্রিয়াগুলি জাভাস্ক্রিপ্ট দ্বারা অ্যাক্সেস করা যায় না, তবে আপনি তাদের ক্যাশে এপিআই দিয়ে ক্যাশে করতে পারেন fetchএবং কোনও পরিষেবা কর্মীর ইভেন্ট হ্যান্ডলারে তাদের সাথে প্রতিক্রিয়া জানাতে পারেন । সুতরাং তারা আপনার অ্যাপ্লিকেশনটিকে অফলাইনে তৈরি করার জন্য, আপনি যে সংস্থানগুলি নিয়ন্ত্রণ করতে পারবেন না তার জন্যও যেমন দরকারী (যেমন সিডিএন-র সংস্থান যা সিওআরএস শিরোলেখ সেট করে না)।


1

নোড জেএস অ্যাপ্লিকেশনটিরও সমাধান রয়েছে। CORS যে কোনও জায়গায় একটি নোডজেএস প্রক্সি যা প্রক্সাইড অনুরোধে সিওআরএস শিরোনাম যুক্ত করে।

প্রক্সিতে ইউআরএলটি আক্ষরিকভাবে পথ থেকে নেওয়া হয়েছে, যাচাইকৃত এবং প্রক্সিড করা হয়েছে। প্রক্সড ইউআরআই এর প্রোটোকল অংশটি alচ্ছিক এবং "http" এ ডিফল্ট। 443 পোর্ট নির্দিষ্ট করা থাকলে প্রোটোকলটি "https" এ ডিফল্ট হয়।

এই প্যাকেজটি কুকিজ ব্যতীত HTTP পদ্ধতি বা শিরোনামগুলিতে কোনও বিধিনিষেধ রাখে না। ব্যবহারকারীর শংসাপত্রগুলির অনুরোধ অনুমোদিত নয়। অ্যাপ্লিকেশনটিকে অনুরোধের প্রক্সিংয়ের জন্য শিরোনামের জন্য কনফিগার করা যেতে পারে, উদাহরণস্বরূপ ব্রাউজার থেকে সরাসরি দর্শন এড়াতে। https://robwu.nl/cors-anywhere.html


-2

জাভাস্ক্রিপ্ট উত্তর পেতে কিছুটা জটিল, আমি ব্যাকএন্ড থেকে এপিটি পেয়ে এবং তারপরে এটিকে সামনের দিকে কল করে ঠিক করেছি।

public function get_typechange () {

    $ url = "https://........";
    $ json = file_get_contents ($url);
    $ data = json_decode ($ json, true);
    $ resp = json_encode ($data);
    $ error = json_last_error_msg ();
    return $ resp;

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