ক্রসরিগিন বৈশিষ্ট্যটির উদ্দেশ্য ...?


88

উভয় চিত্র এবং স্ক্রিপ্ট ট্যাগ।

আমার বোধগম্যতা হ'ল আপনি অন্য ডোমেনের স্ক্রিপ্ট এবং চিত্র উভয়ই অ্যাক্সেস করতে পারবেন। সুতরাং যখন কেউ এই বৈশিষ্ট্যটি ব্যবহার করে?

আপনি যখন আপনার স্ক্রিপ্ট এবং চিত্র অ্যাক্সেস করার জন্য অন্যের ক্ষমতা সীমাবদ্ধ করতে চান তখন এটি কি হয়?

ছবি:

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-crossorigin

স্ক্রিপ্টস:

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script

উত্তর:


31

CORS- সক্ষম চিত্রগুলি কলঙ্কিত না করে উপাদানটিতে পুনরায় ব্যবহার করা যেতে পারে। অনুমোদিত মানগুলি হ'ল:

পৃষ্ঠাটি ইতিমধ্যে আপনার প্রশ্নের উত্তর দেয়।

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

এমডিএন এর ঠিক এই জিনিসটির একটি পৃষ্ঠা রয়েছে: https://developer.mozilla.org/en-US/docs/HTML/CORS_En اهل_I छवि

আপনি যখন আপনার স্ক্রিপ্ট এবং চিত্র অ্যাক্সেস করার জন্য অন্যের ক্ষমতা সীমাবদ্ধ করতে চান তখন এটি কি হয়?

না


4
আমি আমার প্রশ্নের লিঙ্কটি পোস্ট করার সাথে সাথে এটি পড়েছি। এটি আমার কাছে কিছুই বোঝায় না। প্রশ্নটি এমন একটি সাধারণ ছিল যাতে স্ক্রিপ্টগুলিও অন্তর্ভুক্ত ছিল।
স্মুরফেট

আমি মনে করি না এটি যদি সত্যিই প্রশ্নের উত্তর হয়Purpose of the crossorigin attribute …?
Pmpr

53

উত্তর স্পেসিফিকেশন পাওয়া যাবে ।

এর জন্য img:

crossoriginঅ্যাট্রিবিউটে একটি হল CORS সেটিংস অ্যাট্রিবিউট । এর উদ্দেশ্য হ'ল তৃতীয় পক্ষের সাইটগুলি থেকে চিত্রগুলি মঞ্জুরি দেওয়া যা ক্রস-অরিজিন অ্যাক্সেসের সাথে ব্যবহার করতে দেয় canvas

এবং এর জন্য script:

crossoriginঅ্যাট্রিবিউটে একটি হল CORS সেটিংস অ্যাট্রিবিউট । এটি অন্যান্য উত্স থেকে প্রাপ্ত স্ক্রিপ্টগুলির জন্য এটি ত্রুটি সম্পর্কিত তথ্য প্রকাশিত হবে কিনা তা নিয়ন্ত্রণ করে।


7
একই নাম থাকা সত্ত্বেও এগুলি খুব একটা মিল আছে বলে মনে হয়। একটি ত্রুটি নিয়ন্ত্রণ নিয়ন্ত্রণ, অন্যটি ক্যানভাস সঙ্গে ব্যবহারের জন্য।
স্মুরফেট

@ স্মারফেট: তাদের সাধারণ জিনিসটি হ'ল ক্রস-অরিজিন উত্স থেকে যখন ব্যবহৃত হয় তখন উপাদানটি কীভাবে কাজ করে তা তারা পরিবর্তন করে। তবে হ্যাঁ, এগুলি অন্যথায় আসলেই অন্যরকম।
টিজে ক্রাউডার

4
@ স্মারফেট: এটি চিত্রগুলির ব্যবহার থেকে আপনাকে বাধা দেওয়ার সাথে সম্পর্কিত নয়, কেবলমাত্র canvasউপাদানগুলিতে তাদের ব্যবহার বাধা দেওয়ার (বা অনুমতি দেওয়ার) সাথে ।
টিজে ক্রাউডার

ফায়ারফক্সের কোনও বহিরাগত স্টাইলশিটের সাথে লিঙ্ক করার সময় (যেমন গুগল ফন্টগুলি ব্যবহার করে) এই বৈশিষ্ট্যটি লিঙ্ক উপাদানগুলিতেও কার্যকর - কেবল একটি এফওয়াইআই, ডকুমেন্ট.স্টাইলশীট অ্যাক্সেস করে এমন কোনও স্ক্রিপ্ট থাকলে আপনার
উত্সাহিত

@ স্মারফেট: আইফ্রেমের জন্য কি এমন কোনও বৈশিষ্ট্য রয়েছে যাতে আমি সার্ভার দিক থেকে এসসিআরটি নিয়ন্ত্রণ করতে পারি, যদি অনুরোধটি জানা অরিজিন থেকে আসে বা না?
আকাশপাত্র

34

এইভাবে আমরা crossoriginকোনও scriptট্যাগে এটি সাফল্যের সাথে ব্যবহার করেছি :

আমাদের সমস্যা ছিল: আমরা ব্যবহার করে সার্ভারে js ত্রুটিগুলি লগ করার চেষ্টা করছিলাম window.onerror

আমরা যে ত্রুটিগুলি লগ করছি তার প্রায় সমস্তগুলির মধ্যে এই বার্তাটি ছিল: Script error.এবং আমরা কীভাবে এই জেএস ত্রুটিগুলি সমাধান করবেন সে সম্পর্কে খুব কম তথ্য পাচ্ছিলাম।

দেখা যাচ্ছে যে ক্রোমে নেটিভ প্রয়োগটি ত্রুটিগুলি রিপোর্ট করার জন্য

if (securityOrigin()->canRequest(targetUrl)) {
        message = errorMessage;
        line = lineNumber;
        sourceName = sourceURL;
} else {
        message = "Script error.";
        sourceName = String();
        line = 0;
}

পাঠাব messageযেমন Script error.অনুরোধ স্ট্যাটিক সম্পদ ব্রাউজারের লঙ্ঘন করে যদি একই বংশোদ্ভূত নীতি

আমাদের ক্ষেত্রে আমরা সিডিএন থেকে স্থির সম্পদ পরিবেশন করছিলাম।

আমরা যেভাবে এটি সমাধান করেছি তা ট্যাগটিতে crossoriginবৈশিষ্ট্য যুক্ত করা হয়েছিল script

পিএস এই উত্তরটি থেকে সমস্ত তথ্য পেয়েছে


4

আপনি যদি স্থানীয়ভাবে কোডের একটি দ্রুত অংশ বিকাশ করছেন এবং আপনি ক্রোম ব্যবহার করছেন তবে সমস্যা আছে। যদি আপনার পৃষ্ঠাটি "ফাইল: // এক্সএক্সএক্সএক্সএক্সএক্স" ফর্মের একটি ইউআরএল ব্যবহার করে লোড হয়, তবে ক্যানভাসে getImageData () ব্যবহারের চেষ্টা ব্যর্থ হবে এবং ক্রস-অরিজিন সুরক্ষা ত্রুটি ছুঁড়ে ফেলবে, এমনকি যদি আপনার চিত্রটি একই থেকে পাওয়া যায় if আপনার স্থানীয় মেশিনে ডিরেক্টরিটি ক্যানভাস রেন্ডারিং হিসাবে HTML পৃষ্ঠা হিসাবে। সুতরাং যদি আপনার এইচটিএমএল পৃষ্ঠাটি এড়ানো হয় তবে বলুন:

ফাইল: // ডি: /wwwroot/mydir/mytestpage.html

এবং আপনার জাভাস্ক্রিপ্ট ফাইল এবং চিত্রগুলি এখান থেকে নেওয়া হচ্ছে, বলুন:

ফাইল: // ডি: /wwwroot/mydir/mycode.js

ফাইল: // ডি: /wwwroot/mydir/myI छवि.png

তারপরেও এই মাধ্যমিক সত্তাগুলি একই উত্স থেকে আনা হচ্ছে সত্ত্বেও, সুরক্ষা ত্রুটিটি এখনও ফেলে দেওয়া হচ্ছে

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

এছাড়াও, একই কারণে চিত্রটির ক্রসআরগিন সম্পত্তি সেট করা "বেনামে" কাজ করে না।

আমি এখনও এটির জন্য একটি কাজের সন্ধানের চেষ্টা করছি, তবে আবারও মনে হচ্ছে, স্থানীয় ডিবাগিং ব্রাউজার বাস্তবায়নকারীদের দ্বারা যতটা সম্ভব বেদনাদায়ক রেন্ডার করা হচ্ছে।

আমি কেবল ফায়ারফক্সে আমার কোডটি চালানোর চেষ্টা করেছি এবং আমার চিত্রটি এইচটিএমএল এবং জেএস স্ক্রিপ্টগুলির মতো একই উত্স থেকে এসেছে তা স্বীকৃতি দিয়ে ফায়ারফক্স এটি সঠিকভাবে পেয়েছে। সুতরাং আমি ক্রোমে কীভাবে সমস্যাটি ঘটাতে পারি সে সম্পর্কে কিছু ইঙ্গিতগুলি স্বাগত জানাব, ফায়ারফক্স যখন কাজ করছে, এটি ডিবাগারটি বেদনাদায়কভাবে ধীরে ধীরে, পরিষেবা আক্রমণ থেকে অস্বীকৃতি থেকে এক ধাপ অপসারণের পর্যায়ে পৌঁছেছে।


4
ধন্যবাদ, এই উত্তরটি আমাকে কেবল স্থানীয় পরীক্ষার পরিবেশকে প্রভাবিত করতে পারে তা বুঝতে পেরেছিল এবং তা ছিল।
ব্যবহারকারী 1032613

1

ক্রস-অরিজিন ত্রুটি না ফেলে ফাইল: // রেফারেন্সগুলিকে অনুমতি দেওয়ার জন্য কীভাবে গুগল ক্রোমকে প্ররোচিত করবেন তা আমি খুঁজে পেয়েছি।

পদক্ষেপ 1: একটি শর্টকাট (উইন্ডোজ) বা অন্যান্য অপারেটিং সিস্টেমের সমতুল্য তৈরি করুন;

পদক্ষেপ 2: নিম্নলিখিতগুলির মতো কিছুতে লক্ষ্য নির্ধারণ করুন:

"সি: \ প্রোগ্রাম ফাইল (x86) \ গুগল ক্রোম \ অ্যাপ্লিকেশন rome chrome.exe" - ফাইল থেকে অ্যাক্সেস

এই বিশেষ কমান্ড লাইনের যুক্তি, - ফাইলগুলি ফাইল থেকে অ্যাক্সেস করুন - ক্রোমকে আপনাকে ফাইল: // ওয়েব পৃষ্ঠাগুলি, চিত্র ইত্যাদির রেফারেন্স ব্যবহার করতে অনুমতি দেয়, প্রতিবার যখন আপনি সেগুলি স্থানান্তর করার চেষ্টা করবেন তখন ক্রস-অরিজিন ত্রুটিগুলি ছুঁড়ে না ফেলে উদাহরণস্বরূপ, এইচটিএমএল ক্যানভাসে চিত্রগুলি। এটি আমার উইন্ডোজ set সেটআপে কাজ করে তবে এটি উইন্ডোজ ৮/১০ এবং বিভিন্ন লিনাক্সের ডিস্ট্রোজেও কার্যকর হবে কিনা তা খতিয়ে দেখার মতো। যদি এটি হয়, সমস্যা সমাধান করা - অফলাইনের বিকাশ স্বাভাবিক হিসাবে পুনরায় শুরু হয়।

এখন আমি ফাইল থেকে চিত্রগুলি এবং জেএসএন ডেটা রেফারেন্স করতে পারি: // ইউআরআই, ক্রোম ছাড়াই ক্রস-অরিজিন ত্রুটিগুলি যদি আমি কোনও ক্যানভাসে চিত্রের ডেটা স্থানান্তর করতে চেষ্টা করি, বা JSON ডেটা কোনও ফর্ম উপাদানটিতে স্থানান্তরিত করার চেষ্টা করি।

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