যখন আমি একটি "প্রাক সংযোগ" <লিঙ্ক> এ "ক্রসরিগিন" বৈশিষ্ট্যটি ব্যবহার করব?


14

আমি আমার সাইটে কিছু প্রাক-সংযোগের উত্সের ইঙ্গিতগুলি অন্তর্ভুক্ত করতে চাই যাতে ব্রাউজারগুলি সিডএন-কে অনুরোধ করে স্ক্রিপ্ট ট্যাগটি দেখার আগে ব্রাউজারগুলি (উদাহরণস্বরূপ) jQuery CDN এর সাথে সংযোগ করতে পারে। আমি নিশ্চিত না যে আমার "ক্রসরিগিন" বৈশিষ্ট্যটি অন্তর্ভুক্ত করা উচিত বা এর মানটি কী হওয়া উচিত। বৈশিষ্ট বলছেন, আংশিকভাবে,

প্রাক সংযোগ শুরু করতে, ব্যবহারকারী এজেন্টকে এই পদক্ষেপগুলি চালাতে হবে:

[...]

  1. যাক corsAttributeState উপাদান এর বর্তমান অবস্থা হতে crossoriginবিষয়বস্তু অ্যাট্রিবিউট।
  2. যাক পরিচয়পত্র করার জন্য একটি বুলিয়ান মান সেট করা true
  3. যদি কর্সঅ্যাট্রিবিউটস্টেট হয় Anonymousএবং উত্সটি বর্তমান নথির উত্সের সমান না হয় তবে শংসাপত্রগুলি এতে সেট করুন false
  4. উত্স এবং শংসাপত্রগুলির সাথে সংযোগ পাওয়ার চেষ্টা করুন ।

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


সম্পর্কিত: stackoverflow.com/questions/55520102/...
jakub.g

উত্তর:


4

আমি একই জিনিস অনুসন্ধানের জন্য করা হয় এবং আমি দেখেছি এই

এটি এখানে উল্লেখ করেছে যে আপনি যদি ক্রস অরিজিন বৈশিষ্ট্যটি ব্যবহার না করেন তবে ব্যবহারকারী এজেন্ট কেবল ডিএনএস লুকআপ করে তবে নির্দিষ্ট ডোমেনের সাথে সংযোগ স্থাপন করে না। সুতরাং আপনার যদি ক্রস ডোমেনের সাথে প্রাক কানেক্ট করতে হয় তবে ক্রসরিগিন অ্যাট্রিবিউটটির প্রয়োজন:

<link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin>

এছাড়াও যদি আপনি সেই নির্দিষ্ট ক্রস ডোমেনে কিছু শংসাপত্র প্রেরণ করতে চান তবে আপনি মানটিকে ক্রসরিগিন হিসাবে সেট করতে পারেন crossorigin = use-credentialsঅন্যথায় আমি ডিফল্ট মান বেনামে বলে মনে করি।


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

2

যতদূর আমি ব্যবহার বুঝতে crossoriginতার মান পরিপ্রেক্ষিতে, বিশেষ করে anonymousএবং use-credentials, আপনি ব্যবহার করা উচিত crossorigin="use-credentials"ক্ষেত্রে:

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

উপরন্তু ডকুমেন্টেশনগুলো আপনি উদাহৃত আমি পেয়েছি এই এবং যে । তবে প্রকৃতপক্ষে ডকুমেন্টেশনটি বিভ্রান্তিমূলক এবং এতে ভুল বানান রয়েছে: প্রথম এটি কল করে use-credentials, দ্বিতীয়টি - user-credentials

যাইহোক, আমার বোঝার মধ্যে:

  • কোন crossoriginসব সমান এcrossorigin="anonymous"
  • crossorigin সমান crossorigin="use-credentials"

হয়তো কেউ আমাকে সংশোধন করবে।

PS : বিষয়টিতে মোজিলা পৃষ্ঠার বর্তমান সংস্করণটির অর্থ:

একটি অবৈধ কীওয়ার্ড এবং একটি খালি স্ট্রিং বেনামী কীওয়ার্ড হিসাবে পরিচালনা করা হবে।

মানে: মোটেও না crossorigin, crossoriginবা crossorigin="use_credentials"সমস্ত হিসাবে পরিচালনা করা হয় crossorigin="anonymous"


5
আমি বিশ্বাস করি, এমডিএন-তে উল্লিখিত হিসাবে , ডিফল্টরূপে (অর্থাৎ যখন বৈশিষ্ট্যটি নির্দিষ্ট করা হয় না), সিওআরএস মোটেও ব্যবহৃত হয় না। এছাড়াও, শুধুমাত্র সেটিং crossoriginসমান crossorigin="anonymous"
শেক্সপিয়ার

1

এটি দুটি বিষয়ের উপর নির্ভর করে:

  1. যে ধরণের সম্পদ ডাউনলোড করা হবে (যা সিওআরএস ব্যবহৃত হবে কিনা তা নির্ধারণ করে)
  2. লক্ষ্য সার্ভারটি সিওআরএস সংযোগের জন্য শংসাপত্রগুলি ব্যবহার করে কিনা

JQuery এর জন্য, আপনি ব্যবহার করবেন নাcrossorigin । স্ক্রিপ্টগুলি ধরণের ব্রাউজারগুলি ডাউনলোডের জন্য সিওআরএস ব্যবহার করে না

অন্যদিকে ফন্টগুলি সিওআরএস ব্যবহার করে।

  • পৃষ্ঠাটি যদি কেবল সংস্থানগুলি ব্যবহার করে যা CORS ব্যবহার করে তবে crossoriginবৈশিষ্ট্যটি অন্তর্ভুক্ত করুন ।
  • পৃষ্ঠাটি যদি কেবল এমন সংস্থানগুলি নিয়ে আসে যা CORS ব্যবহার করে না , বাদ দিন crossorigin। যদি
  • পৃষ্ঠাটি যদি উভয় ধরণের সংস্থান নিয়ে আসে তবে আপনার দুটি সংস্থার ইঙ্গিতের প্রয়োজন হতে পারে । (সম্পূর্ণ প্রকাশ, লিঙ্কটি আমার ব্যক্তিগত সাইটে। :-)) কেউ উল্লেখ করেছেন যে HTTP / 2 এর জন্য আপনার দুটি ইঙ্গিতের প্রয়োজন হতে পারে না। আমার পরীক্ষার সময় হয়নি।

এখানে স্ট্যাক ওভারফ্লো পোস্টটি যেখানে আমি একই সমস্যার মুখোমুখি হয়েছিল।

সিওআরএস শংসাপত্রগুলি যখন প্রয়োজন তখন আমি ডুবাইনি। যেখানে তাদের প্রয়োজন সেখানে আমি একটি উদাহরণ দেখিনি, সুতরাং সম্ভাবনাগুলি আপনি নিরাপদে crossoriginরয়েছেন (যেমন or ক্রসরিগিন = "বেনামে")।


1

এখনও পর্যন্ত সমস্ত উত্তর হয় সরল, অসম্পূর্ণ বা আংশিক ভুল বলে মনে হচ্ছে (বিষয়টি জটিল, বিষয় গুলিয়ে বিভ্রান্তিকরভাবে নামকরণ করা হয়েছে এবং ভালভাবে নথিভুক্ত করা হয়নি!), সুতরাং এখানে আমার বোঝার বিষয়:

দ্বারা নির্মিত সংযোগটি পুনরায় ব্যবহার করতে সক্ষম হওয়ার জন্য <link rel=preconnect>, আপনি কোন ধরণের সামগ্রী আনতে চান তা উপর নির্ভর করে বিষয়গুলি নির্ভর করে যেখান থেকে, অনুরোধটি ব্রাউজার শংসাপত্রগুলি প্রেরণ করবে কিনা (যা ব্রাউজার দ্বারা স্পষ্টভাবে বা স্পষ্টভাবে প্রতিষ্ঠিত করা যেতে পারে):

অনুরোধটি একই-উত্সের ( example.comঅনুরোধের সাবসোর্স থেকে example.com)

preconnectপ্রথমে কোনও প্রয়োজন নেই ; ব্রাউজারটি বেশ কিছুক্ষণ পৃষ্ঠা লোড করার পরে সংযোগটি খোলা রাখে। যদি একাধিক সংযোগ খোলার থাকে তবে ব্রাউজারটি নিজেই সিদ্ধান্ত নেয় যে কতগুলি খুলতে হবে (সার্ভার টিএলএস হ্যান্ডশেক, ব্রাউজার সেটিংস ইত্যাদিতে HTTP / 2 সমর্থন ঘোষণা করে কিনা তার উপর নির্ভর করে)

যাচাই করতে হবে : একই-উত্স অনুরোধটির যদি crossoriginবৈশিষ্ট্য রয়েছে: তবে এটি ব্যবহার করা হয় বা এড়ানো হবে?

অনুরোধটি ক্রস-example.com অরিজিনের ( অনুরোধের সাবসোর্স থেকে another.com)

  • যদি প্রকৃত অনুরোধটি এইচটিএমএল ( জেএসে - ক্ষেত্রে গুরুত্বপূর্ণ) তে সুস্পষ্টভাবেcrossorigin বৈশিষ্ট্যযুক্ত করে থাকে তবে প্রি সংযোগটিও এটি অবশ্যই একই মান সহ থাকতে পারে (সম্ভবত এমন ক্ষেত্রে ব্যতীত যেখানে এটি অর্থবোধ করে না এবং উপেক্ষা করা হয় - পুরোপুরি পরিষ্কার নয়) আমি এখনও)crossOrigincrossorigin
  • অন্যথায়, যদি অনুরোধ করে তবে <script type=module>: চেক করা উচিত
  • অন্যথায়, যদি অনুরোধ এবং জন্য "পুরানো স্কুল" অনুরোধ <img>, <style type=stylesheet>, <iframe>, ক্লাসিক <script>ইত্যাদি (HTML বা জাতীয় মাধ্যমে প্রবর্তিত) ছাড়া crossoriginস্পষ্টভাবে উল্লিখিত , তারপর preconnect আবশ্যক নেই crossoriginঅ্যাট্রিবিউট সেট।
  • অন্যথায়, যদি অনুরোধটি ক্রস- অরিজিনের ফন্টের অনুরোধ হয় তবে প্রি সংযোগ অবশ্যই থাকা উচিতcrossorigin=anonymous
  • অন্যথায়, যদি অনুরোধটি ক্রস-উত্স fetch বা XHR:
    • যদি এটি শংসাপত্রযুক্ত মোডে করা হয় (যেমন কুকিজ সংযুক্ত থাকে বা এইচটিটিপি বেসিক লেখাগুলি ব্যবহৃত হয়; আনার ক্ষেত্রে, এর অর্থ credentials !== omit; এক্সএইচআর ক্ষেত্রে withCredentials === true:): প্রাক সংযোগ থাকতে হবেcrossorigin=use-credentials
    • যদি এটি শংসাপত্রযুক্ত মোডে না থাকে: প্রি সংযোগ থাকা আবশ্যক crossorigin=anonymous

শেষ কেসের জন্য (আনুন / এক্সএইচআর), ক্রোম / ফায়ারফক্স ডিভলটুলের নেটওয়ার্ক প্যানেলে যান, একটি অনুরোধে ডান ক্লিক করুন এবং copy as fetchএকটি ড্রপডাউন থেকে চয়ন করুন । এটি জেএসের একটি স্নিপেট তৈরি করবে, যা আপনাকে জানাবে যে যদি অনুরোধটি কর্স-সক্ষম ( "mode"=="cors") এবং শংসাপত্রযুক্ত ( "credentials"=="include"|"same-origin") হয়।

নোট করুন তবে উপরের কৌশলটি অ-এক্সএইচআর / আনার অনুরোধগুলির জন্য সঠিকভাবে কাজ করে না, কারণ উদাহরণস্বরূপ fetchএবং <img>সংযোগ স্থাপনের জন্য বিভিন্ন অ্যালগরিদম ব্যবহার করুন, যেমন পূর্বে বর্ণিত হয়েছে।

শেষ অবধি, এইচটিএমএলে, <link ...crossorigin>=== <link ...crossorigin=anonymous>

অতিরিক্ত নোট এবং লিঙ্ক:

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