অ্যাক্সেস-নিয়ন্ত্রণ-অনুমতি-শংসাপত্রের শিরোনামটি ঠিক কী করে?


167

আমি কীভাবে সিওআরএস ব্যবহার করব তা বোঝার চেষ্টা করছি এবং Access-Control-Allow-Credentialsশিরোনাম কী করবে তা নিয়ে বিভ্রান্ত ।

ডকুমেন্টেশন বলে

শংসাপত্রের পতাকাটি সত্য হলে অনুরোধের প্রতিক্রিয়াটি প্রকাশিত হতে পারে কি না তা নির্দেশ করে।

তবে প্রতিক্রিয়াটি "উন্মুক্ত" হওয়ার অর্থ কী তা আমি বুঝতে পারি না।

এই শিরোনামটি সত্য হিসাবে সেট করা হচ্ছে (শংসাপত্রের পতাকাটি সত্য হিসাবে সেট করা হচ্ছে এর সাথে মিলিত) আসলে কী করে তা কি কেউ ব্যাখ্যা করতে পারেন?


উত্তর:


264

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

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

ক্লায়েন্ট কোড অবশ্যইwithCredentials সম্পত্তি সেট XMLHttpRequestকরতে হবেtrue অর্ডার অনুমতি দিতে হবে।

তবে এই শিরোলেখ একাই যথেষ্ট নয়। সার্ভার অবশ্যইAccess-Control-Allow-Credentials শিরোনাম দিয়ে প্রতিক্রিয়া জানাতে হবে । এই শিরোনাম দিয়ে প্রতিক্রিয়াtrue মানে সার্ভারটি কুকিজ (বা অন্যান্য ব্যবহারকারীর শংসাপত্রগুলি) ক্রস-উত্স অনুরোধগুলিতে অন্তর্ভুক্ত করার অনুমতি দেয়।

আপনার যদি ক্রস-অরিজিনাল শংসাপত্রযুক্ত অনুরোধগুলি কাজ করতে চান তবে আপনার ব্রাউজারটি তৃতীয় পক্ষের কুকিজগুলি ব্লক করছে না তাও নিশ্চিত করতে হবে ।

আপনি একই-উত্স বা ক্রস-অরিজিন অনুরোধগুলি করছেন তা নির্বিশেষে নোট করুন, আপনার সাইটটি সিএসআরএফ থেকে রক্ষা করা দরকার (বিশেষত যদি আপনার অনুরোধে কুকিজ অন্তর্ভুক্ত থাকে)।


1
আমি আপনার প্রশ্নটি কভার করার উত্তরটি পরিষ্কার করে দিয়েছি। মূলত JSON-P এটি অন্যায় করে এবং কম সুরক্ষিত।
মনসুর

28
"উন্মুক্ত" এর অর্থটি সম্পর্কে মন্তব্য করতে এইটিকে কিছুটা যুক্ত করতে চাই। জিইটি অনুরোধগুলির জন্য স্পেকটির কোনও পূর্ব-বিমানের প্রয়োজন নেই (সার্ভার শংসাপত্রগুলি অনুমতি দেবে কিনা তা পরীক্ষা করার জন্য অতিরিক্ত রাউন্ডট্রিপ) doesn't প্রিফ্লাইটিংয়ের পরিবর্তে ব্রাউজারটি সর্বদা অনুরোধ করে, যদি withCredentialsসেট করা থাকে তবে কুকিজ প্রেরণ করবে , তবে তারপরে যখন প্রতিক্রিয়াটি পাওয়া যায়, যদি উইন্ডোসেন্টিভ্যালস সেট করা থাকে, তবে প্রতিক্রিয়াটির অ্যাক্সেস থাকলে কেবল কলিং জাভাস্ক্রিপ্টে ফলাফলটি সরবরাহ / প্রকাশ করবে will কন্ট্রোল-অনুমতি-শংসাপত্র শিরোনাম সেট। যদি কোনও শিরোনাম না থাকে, তবে এটি প্রতিক্রিয়াটিকে কার্যকর করে না, কার্যকরভাবে এটিকে কালো করে।
heavi5ide

4
@ হ্যাভিআইফাইড, হ্যাঁ, এমনকি ব্রাউজার ক্লায়েন্ট কোডের প্রতিক্রিয়া প্রকাশ না করলেও, কুকি-সহ অনুরোধটি এখনও প্রেরণ করা হয়েছিল (অ-প্রাক-আলোকিত অনুরোধের জন্য)। সুতরাং সিএসআরএফ এখনও করা হবে।
পেসারিয়ার

7
যেহেতু এটি একটি জনপ্রিয় উত্তর, আমি তথ্যের আরও একটি গুরুত্বপূর্ণ টুকরো যুক্ত করতে যাচ্ছি: আপনার অনুরোধ এবং প্রতিক্রিয়া শিরোনামগুলি সঠিকভাবে কনফিগার করা ছাড়াও, আপনি যদি নিশ্চিত হন যে আপনার ব্রাউজারটি তৃতীয় পক্ষের কুকিজগুলিকে অবরুদ্ধ করছে না তবে আপনি এটিও নিশ্চিত করতে হবে ক্রস-অরিজিন শংসাপত্রযুক্ত অনুরোধগুলি কাজ করতে চান। দেখুন stackoverflow.com/a/16634887/2970321
alexw

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