যদি আপনার ওয়েবসাইট document.domain সেট করার উপর নির্ভর করে, আপনার পদক্ষেপ প্রয়োজন।
কি পরিবর্তন হচ্ছে, এবং কেন?
Chrome 115 থেকে শুরু করে, ওয়েবসাইটগুলি document.domain
সেট করতে অক্ষম হবে : Chrome document.domain
অপরিবর্তনীয় করে তুলবে৷ ক্রস-অরিজিন যোগাযোগ করতে, আপনাকে বিকল্প পদ্ধতি ব্যবহার করতে হবে, যেমন postMessage()
বা চ্যানেল মেসেজিং API।
মনে রাখবেন এই পরিবর্তনটি ধীরে ধীরে চালু করা হবে।
আমরা আশা করি যে অন্যান্য ব্রাউজারগুলি শেষ পর্যন্ত এই কার্যকারিতা অবমূল্যায়ন করবে এবং সরিয়ে দেবে। বিস্তারিত জানার জন্য ব্রাউজার সামঞ্জস্য বিভাগ পর্যালোচনা করুন.
কেন document.domain
অপরিবর্তনীয়?
document.domain
মূল হোস্টনাম পেতে বা সেট করার জন্য ডিজাইন করা হয়েছে। অনেক ওয়েবসাইট একই-সাইট কিন্তু ক্রস-অরিজিন পৃষ্ঠাগুলির মধ্যে যোগাযোগের অনুমতি দেওয়ার জন্য document.domain
সেট করে।
যদিও এটি একটি সুবিধাজনক কৌশল, এটি একটি নিরাপত্তা ঝুঁকি প্রবর্তন করে, কারণ এটি একই-অরিজিন নীতি শিথিল করে । document.domain
আশেপাশে নিরাপত্তা সংক্রান্ত উদ্বেগের কারণে স্পেসিফিকেশনের পরিবর্তন হয়েছে যা ব্যবহারকারীদের এটি ব্যবহার এড়াতে সতর্ক করে ।
বিস্তারিত: কেন document.domain অপরিবর্তনীয় বানাবেন?
কিভাবে document.domain
আজ ব্যবহার করা হয়
অনেক ওয়েবসাইট একই-সাইট কিন্তু ক্রস-অরিজিন পৃষ্ঠাগুলির মধ্যে যোগাযোগের অনুমতি দেওয়ার জন্য document.domain
সেট করে।
একই-সাইট কিন্তু ক্রস-অরিজিন সাইটগুলিতে একই eTLD+1 কিন্তু ভিন্ন সাবডোমেন রয়েছে।
এখন পর্যন্ত document.domain
কীভাবে ব্যবহার করা হয়েছিল তা এখানে:
ধরা যাক https://parent.example.com
এর একটি পৃষ্ঠা https://video.example.com
থেকে একটি iframe পৃষ্ঠা এম্বেড করে। এই পৃষ্ঠাগুলিতে বিভিন্ন সাবডোমেনের সাথে একই eTLD+1 ( example.com
) রয়েছে৷ যখন উভয় পৃষ্ঠার document.domain
'example.com'
তে সেট করা হয়, তখন ব্রাউজার দুটি মূলকে একই-উৎস হিসাবে বিবেচনা করে।
https://parent.example.com
এর জন্য document.domain
সেট করুন:
// Confirm the current origin of "parent.example.com"
console.log(document.domain);
// Set the document.domain
document.domain = 'example.com';
console.log(document.domain);
https://video.example.com
এর জন্য document.domain
সেট করুন:
// Confirm the current origin of "video.example.com"
console.log(document.domain);
// Set the document.domain
document.domain = 'example.com';
console.log(document.domain);
আপনি এখন https://parent.example.com
এ https://video.example.com
বিপরীতে একটি ক্রস-অরিজিন DOM ম্যানিপুলেশন তৈরি করতে পারেন।
ওয়েবসাইটগুলি document.domain
সেট করে যাতে একই-সাইটের নথিগুলিকে আরও সহজে যোগাযোগ করা সম্ভব হয়৷ যেহেতু এই পরিবর্তনটি একই-অরিজিন নীতি শিথিল করে , তাই মূল পৃষ্ঠাটি iframe-এর নথিতে অ্যাক্সেস করতে এবং DOM ট্রি অতিক্রম করতে সক্ষম হয় এবং এর বিপরীতে।
এটি একটি সুবিধাজনক কৌশল, তবে এটি একটি নিরাপত্তা ঝুঁকি প্রবর্তন করে।
document.domain
এর সাথে নিরাপত্তা সংক্রান্ত উদ্বেগ
document.domain
আশেপাশে নিরাপত্তা সংক্রান্ত উদ্বেগের কারণে স্পেসিফিকেশনের পরিবর্তন হয়েছে যা ব্যবহারকারীদের এটি ব্যবহার এড়াতে সতর্ক করে ।
উদাহরণস্বরূপ, যখন দুটি পৃষ্ঠা document.domain
সেট করে, তারা ভান করতে পারে যেন তারা একই-অরিজিন। এটি বিশেষভাবে গুরুত্বপূর্ণ যখন এই পৃষ্ঠাগুলি বিভিন্ন সাবডোমেনের সাথে একটি শেয়ার করা হোস্টিং পরিষেবা ব্যবহার করে৷ document.domain
সেট করা একই পরিষেবা দ্বারা হোস্ট করা অন্যান্য সমস্ত সাইটের অ্যাক্সেস খুলে দেয়, যা আক্রমণকারীদের আপনার সাইটগুলিতে অ্যাক্সেস করা সহজ করে তোলে৷ এটা সম্ভব কারণ document.domain
ডোমেনের পোর্ট নম্বর অংশটিকে উপেক্ষা করে।
document.domain
সেট করার নিরাপত্তার প্রভাব সম্পর্কে আরও জানতে, MDN-এ "Document.domain" পৃষ্ঠাটি পড়ুন।
ব্রাউজার সামঞ্জস্য
- এইচটিএমএল স্পেসিফিকেশন বলে যে বৈশিষ্ট্যটি সরানো উচিত।
- মোজিলা
document.domain
ডিফল্টভাবে অক্ষম করার কথা বিবেচনা করে প্রোটোটাইপ করার জন্য । - WebKit ইঙ্গিত করেছে যে তারা
document.domain
সেটারকে অবমূল্যায়ন করার বিষয়ে মাঝারিভাবে ইতিবাচক । - অন্যান্য ব্রাউজার বিক্রেতাদের সাথে আলোচনা
- WHATWG / HTML ওয়ার্কিং গ্রুপ পুল অনুরোধ (মুলতুবি পরীক্ষা অভিজ্ঞতা)
আমার সাইট প্রভাবিত হলে আমি কিভাবে জানব?
আপনার ওয়েবসাইট এই পরিবর্তন দ্বারা প্রভাবিত হলে, Chrome আপনাকে DevTools সমস্যা প্যানেলে সতর্ক করে — এই সতর্কতাটি 2022 সালে যোগ করা হয়েছে। DevTools-এর উপরের ডানদিকে হলুদ পতাকাটি লক্ষ্য করুন।
ক্রোম থেকে মুছে ফেলার জন্য নির্ধারিত সমস্ত APIগুলি খুঁজে পেতে আপনি LightHouse অপসারিত API অডিটের মাধ্যমেও আপনার সাইট চালাতে পারেন৷
আপনি যদি রিপোর্টিং API সেট আপ করে থাকেন, তাহলে Chrome আপনাকে এই আসন্ন অবচয় সম্পর্কে অবহিত করার জন্য অবচয় প্রতিবেদন পাঠিয়েছে। বিদ্যমান প্রতিবেদন সংগ্রহ পরিষেবাগুলির সাথে বা আপনার নিজস্ব ইন-হাউস সমাধান তৈরি করে রিপোর্টিং API কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও জানুন।
আমি কিভাবে কর্ম এই পরিবর্তন দেখতে?
Chrome 115 থেকে শুরু করে পরিবর্তনটি ক্রমান্বয়ে চালু করা হবে। আপনার ক্রোম ব্রাউজারে এটি ইতিমধ্যে রোল আউট না হলেও কর্মের এই পরিবর্তন দেখতে, আপনি এটিকে নিম্নরূপ চালু করতে পারেন:
-
chrome://flags/#origin-agent-cluster-default
খুলুন - সক্রিয় নির্বাচন করুন।
- Chrome পুনরায় চালু করুন।
আমি কি বিকল্প ব্যবহার করতে পারি?
সর্বোত্তম বিকল্প হল document.domain
মোটেও পরিবর্তন না করা, উদাহরণস্বরূপ পৃষ্ঠা এবং সমস্ত উপাদান ফ্রেমগুলি একই উত্সের হোস্ট করে৷ এটি সমস্ত ব্রাউজারের সমস্ত সংস্করণে কাজ করে। তবে এটির জন্য একটি অ্যাপ্লিকেশনের যথেষ্ট পুনঃ-কাজের প্রয়োজন হতে পারে, তাই ক্রস-অরিজিন অ্যাক্সেসকে সমর্থন করে এমন বিকল্পগুলিও দেখতে হবে।
document.domain
এর পরিবর্তে postMessage()
বা চ্যানেল মেসেজিং API ব্যবহার করুন
বেশিরভাগ ব্যবহারের ক্ষেত্রে, ক্রস-অরিজিন postMessage()
বা চ্যানেল মেসেজিং API document.domain
প্রতিস্থাপন করতে পারে।
নিম্নলিখিত উদাহরণে:
-
https://parent.example.com
একটি আইফ্রেমের মধ্যেhttps://video.example.com
অনুরোধ করেpostMessage()
এর মাধ্যমে একটি বার্তা পাঠানোর মাধ্যমে DOM ম্যানিপুলেট করার জন্য। -
https://video.example.com
মেসেজ পাওয়ার সাথে সাথে DOM ম্যানিপুলেট করে এবং সাফল্যের কথা অভিভাবককে জানিয়ে দেয়। -
https://parent.example.com
সাফল্য স্বীকার করে।
https://parent.example.com
এ:
// Send a message to https://video.example.com
iframe.postMessage('Request DOM manipulation', 'https://video.example.com');
// Receive messages
iframe.addEventListener('message', (event) => {
// Reject all messages except ones from https://video.example.com
if (event.origin !== 'https://video.example.com') return;
// Filter success messages
if (event.data === 'succeeded') {
// DOM manipulation is succeeded
}
});
https://video.example.com
এ:
// Receive messages
window.addEventListener('message', (event) => {
// Reject all messages except ones from https://parent.example.com
if (event.origin !== 'https://parent.example.com') return;
// Do a DOM manipulation on https://video.example.com.
// Send a success message to https://parent.example.com
event.source.postMessage('succeeded', event.origin);
});
এটি চেষ্টা করুন এবং দেখুন কিভাবে এটি কাজ করে. আপনার যদি নির্দিষ্ট প্রয়োজনীয়তা থাকে যা postMessage()
বা চ্যানেল মেসেজিং API-এর সাথে কাজ করবে না, তাহলে @ChromiumDev-এর মাধ্যমে Twitter- এ আমাদের জানান বা document.domain
ট্যাগ সহ Stack Overflow-এ জিজ্ঞাসা করুন।
একটি শেষ অবলম্বন হিসাবে, Origin-Agent-Cluster: ?0
হেডার পাঠান
আপনার কাছে যদি document.domain
সেট করা চালিয়ে যাওয়ার দৃঢ় কারণ থাকে, তাহলে আপনি Origin-Agent-Cluster: ?0
রেসপন্স হেডার টার্গেট ডকুমেন্টের সাথে পাঠাতে পারেন।
Origin-Agent-Cluster: ?0
Origin-Agent-Cluster
হেডার ব্রাউজারকে নির্দেশ দেয় যে ডকুমেন্টটি অরিজিন-কীড এজেন্ট ক্লাস্টার দ্বারা পরিচালনা করা উচিত কিনা। Origin-Agent-Cluster
সম্পর্কে আরও জানতে, Origin-Agent-Cluster
শিরোনামের সাথে কর্মক্ষমতা বিচ্ছিন্নতার অনুরোধ পড়ুন।
আপনি যখন এই শিরোনামটি পাঠান, তখন আপনার নথিটি ডিফল্টরূপে অপরিবর্তনীয় হয়ে যাওয়ার পরেও document.domain
সেট করা চালিয়ে যেতে পারে৷
অন্যান্য সমস্ত নথি যেগুলির জন্য এই আচরণের প্রয়োজন হয় সেগুলিকেও একটি Origin-Agent-Cluster
পাঠাতে হবে (মনে রাখবেন যে document.domain
যদি শুধুমাত্র একটি নথি সেট করে তবে কোন প্রভাব নেই)।
এন্টারপ্রাইজ নীতির জন্য OriginAgentClusterDefaultEnabled
সক্রিয় কনফিগার করুন
ঐচ্ছিকভাবে, আপনার প্রশাসক আপনার প্রতিষ্ঠান জুড়ে ক্রোম ইন্সট্যান্সে document.domain
ডিফল্টভাবে সেট করার জন্য OriginAgentClusterDefaultEnabled
নীতিকে false
কনফিগার করতে পারেন। আরও জানতে, Chrome এন্টারপ্রাইজ নীতি তালিকা এবং ব্যবস্থাপনা পড়ুন | ডকুমেন্টেশন
সম্পদ
-
Document.domain
- ওয়েব APIs | MDN - অরিজিন আইসোলেশন এবং ডিপ্রেকেটিং
document.domain
-
document.domain
বর্জন করা হচ্ছে। · ইস্যু #564 · w3ctag/design-reviews
স্বীকৃতি
,যদি আপনার ওয়েবসাইট document.domain সেট করার উপর নির্ভর করে, আপনার পদক্ষেপ প্রয়োজন।
কি পরিবর্তন হচ্ছে, এবং কেন?
Chrome 115 থেকে শুরু করে, ওয়েবসাইটগুলি document.domain
সেট করতে অক্ষম হবে : Chrome document.domain
অপরিবর্তনীয় করে তুলবে৷ ক্রস-অরিজিন যোগাযোগ করতে, আপনাকে বিকল্প পদ্ধতি ব্যবহার করতে হবে, যেমন postMessage()
বা চ্যানেল মেসেজিং API।
মনে রাখবেন এই পরিবর্তনটি ধীরে ধীরে চালু করা হবে।
আমরা আশা করি যে অন্যান্য ব্রাউজারগুলি শেষ পর্যন্ত এই কার্যকারিতা অবমূল্যায়ন করবে এবং সরিয়ে দেবে। বিস্তারিত জানার জন্য ব্রাউজার সামঞ্জস্য বিভাগ পর্যালোচনা করুন.
কেন document.domain
অপরিবর্তনীয়?
document.domain
মূল হোস্টনাম পেতে বা সেট করার জন্য ডিজাইন করা হয়েছে। অনেক ওয়েবসাইট একই-সাইট কিন্তু ক্রস-অরিজিন পৃষ্ঠাগুলির মধ্যে যোগাযোগের অনুমতি দেওয়ার জন্য document.domain
সেট করে।
যদিও এটি একটি সুবিধাজনক কৌশল, এটি একটি নিরাপত্তা ঝুঁকি প্রবর্তন করে, কারণ এটি একই-অরিজিন নীতি শিথিল করে । document.domain
আশেপাশে নিরাপত্তা সংক্রান্ত উদ্বেগের কারণে স্পেসিফিকেশনের পরিবর্তন হয়েছে যা ব্যবহারকারীদের এটি ব্যবহার এড়াতে সতর্ক করে ।
বিস্তারিত: কেন document.domain অপরিবর্তনীয় বানাবেন?
কিভাবে document.domain
আজ ব্যবহার করা হয়
অনেক ওয়েবসাইট একই-সাইট কিন্তু ক্রস-অরিজিন পৃষ্ঠাগুলির মধ্যে যোগাযোগের অনুমতি দেওয়ার জন্য document.domain
সেট করে।
একই-সাইট কিন্তু ক্রস-অরিজিন সাইটগুলিতে একই eTLD+1 কিন্তু ভিন্ন সাবডোমেন রয়েছে।
এখন পর্যন্ত document.domain
কীভাবে ব্যবহার করা হয়েছিল তা এখানে:
ধরা যাক https://parent.example.com
এর একটি পৃষ্ঠা https://video.example.com
থেকে একটি iframe পৃষ্ঠা এম্বেড করে। এই পৃষ্ঠাগুলিতে বিভিন্ন সাবডোমেনের সাথে একই eTLD+1 ( example.com
) রয়েছে৷ যখন উভয় পৃষ্ঠার document.domain
'example.com'
তে সেট করা হয়, তখন ব্রাউজার দুটি মূলকে একই-উৎস হিসাবে বিবেচনা করে।
https://parent.example.com
এর জন্য document.domain
সেট করুন:
// Confirm the current origin of "parent.example.com"
console.log(document.domain);
// Set the document.domain
document.domain = 'example.com';
console.log(document.domain);
https://video.example.com
এর জন্য document.domain
সেট করুন:
// Confirm the current origin of "video.example.com"
console.log(document.domain);
// Set the document.domain
document.domain = 'example.com';
console.log(document.domain);
আপনি এখন https://parent.example.com
এ https://video.example.com
বিপরীতে একটি ক্রস-অরিজিন DOM ম্যানিপুলেশন তৈরি করতে পারেন।
ওয়েবসাইটগুলি document.domain
সেট করে যাতে একই-সাইটের নথিগুলিকে আরও সহজে যোগাযোগ করা সম্ভব হয়৷ যেহেতু এই পরিবর্তনটি একই-অরিজিন নীতি শিথিল করে , তাই মূল পৃষ্ঠাটি iframe-এর নথিতে অ্যাক্সেস করতে এবং DOM ট্রি অতিক্রম করতে সক্ষম হয় এবং এর বিপরীতে।
এটি একটি সুবিধাজনক কৌশল, তবে এটি একটি নিরাপত্তা ঝুঁকি প্রবর্তন করে।
document.domain
এর সাথে নিরাপত্তা সংক্রান্ত উদ্বেগ
document.domain
আশেপাশে নিরাপত্তা সংক্রান্ত উদ্বেগের কারণে স্পেসিফিকেশনের পরিবর্তন হয়েছে যা ব্যবহারকারীদের এটি ব্যবহার এড়াতে সতর্ক করে ।
উদাহরণস্বরূপ, যখন দুটি পৃষ্ঠা document.domain
সেট করে, তারা ভান করতে পারে যেন তারা একই-অরিজিন। এটি বিশেষভাবে গুরুত্বপূর্ণ যখন এই পৃষ্ঠাগুলি বিভিন্ন সাবডোমেনের সাথে একটি শেয়ার করা হোস্টিং পরিষেবা ব্যবহার করে৷ document.domain
সেট করা একই পরিষেবা দ্বারা হোস্ট করা অন্যান্য সমস্ত সাইটের অ্যাক্সেস খুলে দেয়, যা আক্রমণকারীদের আপনার সাইটগুলিতে অ্যাক্সেস করা সহজ করে তোলে৷ এটা সম্ভব কারণ document.domain
ডোমেনের পোর্ট নম্বর অংশটিকে উপেক্ষা করে।
document.domain
সেট করার নিরাপত্তার প্রভাব সম্পর্কে আরও জানতে, MDN-এ "Document.domain" পৃষ্ঠাটি পড়ুন।
ব্রাউজার সামঞ্জস্য
- এইচটিএমএল স্পেসিফিকেশন বলে যে বৈশিষ্ট্যটি সরানো উচিত।
- মোজিলা
document.domain
ডিফল্টভাবে অক্ষম করার কথা বিবেচনা করে প্রোটোটাইপ করার জন্য । - WebKit ইঙ্গিত করেছে যে তারা
document.domain
সেটারকে অবমূল্যায়ন করার বিষয়ে মাঝারিভাবে ইতিবাচক । - অন্যান্য ব্রাউজার বিক্রেতাদের সাথে আলোচনা
- WHATWG / HTML ওয়ার্কিং গ্রুপ পুল অনুরোধ (মুলতুবি পরীক্ষা অভিজ্ঞতা)
আমার সাইট প্রভাবিত হলে আমি কিভাবে জানব?
আপনার ওয়েবসাইট এই পরিবর্তন দ্বারা প্রভাবিত হলে, Chrome আপনাকে DevTools সমস্যা প্যানেলে সতর্ক করে — এই সতর্কতাটি 2022 সালে যোগ করা হয়েছে। DevTools-এর উপরের ডানদিকে হলুদ পতাকাটি লক্ষ্য করুন।
ক্রোম থেকে মুছে ফেলার জন্য নির্ধারিত সমস্ত APIগুলি খুঁজে পেতে আপনি LightHouse অপসারিত API অডিটের মাধ্যমেও আপনার সাইট চালাতে পারেন৷
আপনি যদি রিপোর্টিং API সেট আপ করে থাকেন, তাহলে Chrome আপনাকে এই আসন্ন অবচয় সম্পর্কে অবহিত করার জন্য অবচয় প্রতিবেদন পাঠিয়েছে। বিদ্যমান প্রতিবেদন সংগ্রহ পরিষেবাগুলির সাথে বা আপনার নিজস্ব ইন-হাউস সমাধান তৈরি করে রিপোর্টিং API কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও জানুন।
আমি কিভাবে কর্ম এই পরিবর্তন দেখতে?
Chrome 115 থেকে শুরু করে পরিবর্তনটি ক্রমান্বয়ে চালু করা হবে। আপনার ক্রোম ব্রাউজারে এটি ইতিমধ্যে রোল আউট না হলেও কর্মের এই পরিবর্তন দেখতে, আপনি এটিকে নিম্নরূপ চালু করতে পারেন:
-
chrome://flags/#origin-agent-cluster-default
খুলুন - সক্রিয় নির্বাচন করুন।
- Chrome পুনরায় চালু করুন।
আমি কি বিকল্প ব্যবহার করতে পারি?
সর্বোত্তম বিকল্প হল document.domain
মোটেও পরিবর্তন না করা, উদাহরণস্বরূপ পৃষ্ঠা এবং সমস্ত উপাদান ফ্রেমগুলি একই উত্সের হোস্ট করে৷ এটি সমস্ত ব্রাউজারের সমস্ত সংস্করণে কাজ করে। তবে এটির জন্য একটি অ্যাপ্লিকেশনের যথেষ্ট পুনঃ-কাজের প্রয়োজন হতে পারে, তাই ক্রস-অরিজিন অ্যাক্সেসকে সমর্থন করে এমন বিকল্পগুলিও দেখতে হবে।
document.domain
এর পরিবর্তে postMessage()
বা চ্যানেল মেসেজিং API ব্যবহার করুন
বেশিরভাগ ব্যবহারের ক্ষেত্রে, ক্রস-অরিজিন postMessage()
বা চ্যানেল মেসেজিং API document.domain
প্রতিস্থাপন করতে পারে।
নিম্নলিখিত উদাহরণে:
-
https://parent.example.com
একটি আইফ্রেমের মধ্যেhttps://video.example.com
অনুরোধ করেpostMessage()
এর মাধ্যমে একটি বার্তা পাঠানোর মাধ্যমে DOM ম্যানিপুলেট করার জন্য। -
https://video.example.com
মেসেজ পাওয়ার সাথে সাথে DOM ম্যানিপুলেট করে এবং সাফল্যের কথা অভিভাবককে জানিয়ে দেয়। -
https://parent.example.com
সাফল্য স্বীকার করে।
https://parent.example.com
এ:
// Send a message to https://video.example.com
iframe.postMessage('Request DOM manipulation', 'https://video.example.com');
// Receive messages
iframe.addEventListener('message', (event) => {
// Reject all messages except ones from https://video.example.com
if (event.origin !== 'https://video.example.com') return;
// Filter success messages
if (event.data === 'succeeded') {
// DOM manipulation is succeeded
}
});
https://video.example.com
এ:
// Receive messages
window.addEventListener('message', (event) => {
// Reject all messages except ones from https://parent.example.com
if (event.origin !== 'https://parent.example.com') return;
// Do a DOM manipulation on https://video.example.com.
// Send a success message to https://parent.example.com
event.source.postMessage('succeeded', event.origin);
});
এটি চেষ্টা করুন এবং দেখুন কিভাবে এটি কাজ করে. আপনার যদি নির্দিষ্ট প্রয়োজনীয়তা থাকে যা postMessage()
বা চ্যানেল মেসেজিং API-এর সাথে কাজ করবে না, তাহলে @ChromiumDev-এর মাধ্যমে Twitter- এ আমাদের জানান বা document.domain
ট্যাগ সহ Stack Overflow-এ জিজ্ঞাসা করুন।
একটি শেষ অবলম্বন হিসাবে, Origin-Agent-Cluster: ?0
হেডার পাঠান
আপনার কাছে যদি document.domain
সেট করা চালিয়ে যাওয়ার দৃঢ় কারণ থাকে, তাহলে আপনি Origin-Agent-Cluster: ?0
রেসপন্স হেডার টার্গেট ডকুমেন্টের সাথে পাঠাতে পারেন।
Origin-Agent-Cluster: ?0
Origin-Agent-Cluster
হেডার ব্রাউজারকে নির্দেশ দেয় যে ডকুমেন্টটি অরিজিন-কীড এজেন্ট ক্লাস্টার দ্বারা পরিচালনা করা উচিত কিনা। Origin-Agent-Cluster
সম্পর্কে আরও জানতে, Origin-Agent-Cluster
শিরোনামের সাথে কর্মক্ষমতা বিচ্ছিন্নতার অনুরোধ পড়ুন।
আপনি যখন এই শিরোনামটি পাঠান, তখন আপনার নথিটি ডিফল্টরূপে অপরিবর্তনীয় হয়ে যাওয়ার পরেও document.domain
সেট করা চালিয়ে যেতে পারে৷
অন্যান্য সমস্ত নথি যেগুলির জন্য এই আচরণের প্রয়োজন হয় সেগুলিকেও একটি Origin-Agent-Cluster
পাঠাতে হবে (মনে রাখবেন যে document.domain
যদি শুধুমাত্র একটি নথি সেট করে তবে কোন প্রভাব নেই)।
এন্টারপ্রাইজ নীতির জন্য OriginAgentClusterDefaultEnabled
সক্রিয় কনফিগার করুন
ঐচ্ছিকভাবে, আপনার প্রশাসক আপনার প্রতিষ্ঠান জুড়ে ক্রোম ইন্সট্যান্সে document.domain
ডিফল্টভাবে সেট করার জন্য OriginAgentClusterDefaultEnabled
নীতিকে false
কনফিগার করতে পারেন। আরও জানতে, Chrome এন্টারপ্রাইজ নীতি তালিকা এবং ব্যবস্থাপনা পড়ুন | ডকুমেন্টেশন
সম্পদ
-
Document.domain
- ওয়েব APIs | MDN - অরিজিন আইসোলেশন এবং ডিপ্রেকেটিং
document.domain
-
document.domain
বর্জন করা হচ্ছে। · ইস্যু #564 · w3ctag/design-reviews
স্বীকৃতি
,যদি আপনার ওয়েবসাইট document.domain সেট করার উপর নির্ভর করে, আপনার পদক্ষেপ প্রয়োজন।
কি পরিবর্তন হচ্ছে, এবং কেন?
Chrome 115 থেকে শুরু করে, ওয়েবসাইটগুলি document.domain
সেট করতে অক্ষম হবে : Chrome document.domain
অপরিবর্তনীয় করে তুলবে৷ ক্রস-অরিজিন যোগাযোগ করতে, আপনাকে বিকল্প পদ্ধতি ব্যবহার করতে হবে, যেমন postMessage()
বা চ্যানেল মেসেজিং API।
মনে রাখবেন এই পরিবর্তনটি ধীরে ধীরে চালু করা হবে।
আমরা আশা করি যে অন্যান্য ব্রাউজারগুলি শেষ পর্যন্ত এই কার্যকারিতা অবমূল্যায়ন করবে এবং সরিয়ে দেবে। বিস্তারিত জানার জন্য ব্রাউজার সামঞ্জস্য বিভাগ পর্যালোচনা করুন.
কেন document.domain
অপরিবর্তনীয়?
document.domain
মূল হোস্টনাম পেতে বা সেট করার জন্য ডিজাইন করা হয়েছে। অনেক ওয়েবসাইট একই-সাইট কিন্তু ক্রস-অরিজিন পৃষ্ঠাগুলির মধ্যে যোগাযোগের অনুমতি দেওয়ার জন্য document.domain
সেট করে।
যদিও এটি একটি সুবিধাজনক কৌশল, এটি একটি নিরাপত্তা ঝুঁকি প্রবর্তন করে, কারণ এটি একই-অরিজিন নীতি শিথিল করে । document.domain
আশেপাশে নিরাপত্তা সংক্রান্ত উদ্বেগের কারণে স্পেসিফিকেশনের পরিবর্তন হয়েছে যা ব্যবহারকারীদের এটি ব্যবহার এড়াতে সতর্ক করে ।
বিস্তারিত: কেন document.domain অপরিবর্তনীয় বানাবেন?
কিভাবে document.domain
আজ ব্যবহার করা হয়
অনেক ওয়েবসাইট একই-সাইট কিন্তু ক্রস-অরিজিন পৃষ্ঠাগুলির মধ্যে যোগাযোগের অনুমতি দেওয়ার জন্য document.domain
সেট করে।
একই-সাইট কিন্তু ক্রস-অরিজিন সাইটগুলিতে একই eTLD+1 কিন্তু ভিন্ন সাবডোমেন রয়েছে।
এখন পর্যন্ত document.domain
কীভাবে ব্যবহার করা হয়েছিল তা এখানে:
ধরা যাক https://parent.example.com
এর একটি পৃষ্ঠা https://video.example.com
থেকে একটি iframe পৃষ্ঠা এম্বেড করে। এই পৃষ্ঠাগুলিতে বিভিন্ন সাবডোমেনের সাথে একই eTLD+1 ( example.com
) রয়েছে৷ যখন উভয় পৃষ্ঠার document.domain
'example.com'
তে সেট করা হয়, তখন ব্রাউজার দুটি মূলকে একই-উৎস হিসাবে বিবেচনা করে।
https://parent.example.com
এর জন্য document.domain
সেট করুন:
// Confirm the current origin of "parent.example.com"
console.log(document.domain);
// Set the document.domain
document.domain = 'example.com';
console.log(document.domain);
https://video.example.com
এর জন্য document.domain
সেট করুন:
// Confirm the current origin of "video.example.com"
console.log(document.domain);
// Set the document.domain
document.domain = 'example.com';
console.log(document.domain);
আপনি এখন https://parent.example.com
এ https://video.example.com
বিপরীতে একটি ক্রস-অরিজিন DOM ম্যানিপুলেশন তৈরি করতে পারেন।
ওয়েবসাইটগুলি document.domain
সেট করে যাতে একই-সাইটের নথিগুলিকে আরও সহজে যোগাযোগ করা সম্ভব হয়৷ যেহেতু এই পরিবর্তনটি একই-অরিজিন নীতি শিথিল করে , তাই মূল পৃষ্ঠাটি iframe-এর নথিতে অ্যাক্সেস করতে এবং DOM ট্রি অতিক্রম করতে সক্ষম হয় এবং এর বিপরীতে।
এটি একটি সুবিধাজনক কৌশল, তবে এটি একটি নিরাপত্তা ঝুঁকি প্রবর্তন করে।
document.domain
এর সাথে নিরাপত্তা সংক্রান্ত উদ্বেগ
document.domain
আশেপাশে নিরাপত্তা সংক্রান্ত উদ্বেগের কারণে স্পেসিফিকেশনের পরিবর্তন হয়েছে যা ব্যবহারকারীদের এটি ব্যবহার এড়াতে সতর্ক করে ।
উদাহরণস্বরূপ, যখন দুটি পৃষ্ঠা document.domain
সেট করে, তারা ভান করতে পারে যেন তারা একই-অরিজিন। এটি বিশেষভাবে গুরুত্বপূর্ণ যখন এই পৃষ্ঠাগুলি বিভিন্ন সাবডোমেনের সাথে একটি শেয়ার করা হোস্টিং পরিষেবা ব্যবহার করে৷ document.domain
সেট করা একই পরিষেবা দ্বারা হোস্ট করা অন্যান্য সমস্ত সাইটের অ্যাক্সেস খুলে দেয়, যা আক্রমণকারীদের আপনার সাইটগুলিতে অ্যাক্সেস করা সহজ করে তোলে৷ এটা সম্ভব কারণ document.domain
ডোমেনের পোর্ট নম্বর অংশটিকে উপেক্ষা করে।
document.domain
সেট করার নিরাপত্তার প্রভাব সম্পর্কে আরও জানতে, MDN-এ "Document.domain" পৃষ্ঠাটি পড়ুন।
ব্রাউজার সামঞ্জস্য
- এইচটিএমএল স্পেসিফিকেশন বলে যে বৈশিষ্ট্যটি সরানো উচিত।
- মোজিলা
document.domain
ডিফল্টভাবে অক্ষম করার কথা বিবেচনা করে প্রোটোটাইপ করার জন্য । - WebKit ইঙ্গিত করেছে যে তারা
document.domain
সেটারকে অবমূল্যায়ন করার বিষয়ে মাঝারিভাবে ইতিবাচক । - অন্যান্য ব্রাউজার বিক্রেতাদের সাথে আলোচনা
- WHATWG / HTML ওয়ার্কিং গ্রুপ পুল অনুরোধ (মুলতুবি পরীক্ষা অভিজ্ঞতা)
আমার সাইট প্রভাবিত হলে আমি কিভাবে জানব?
আপনার ওয়েবসাইট এই পরিবর্তন দ্বারা প্রভাবিত হলে, Chrome আপনাকে DevTools সমস্যা প্যানেলে সতর্ক করে — এই সতর্কতাটি 2022 সালে যোগ করা হয়েছে। DevTools-এর উপরের ডানদিকে হলুদ পতাকাটি লক্ষ্য করুন।
ক্রোম থেকে মুছে ফেলার জন্য নির্ধারিত সমস্ত APIগুলি খুঁজে পেতে আপনি LightHouse অপসারিত API অডিটের মাধ্যমেও আপনার সাইট চালাতে পারেন৷
আপনি যদি রিপোর্টিং API সেট আপ করে থাকেন, তাহলে Chrome আপনাকে এই আসন্ন অবচয় সম্পর্কে অবহিত করার জন্য অবচয় প্রতিবেদন পাঠিয়েছে। বিদ্যমান প্রতিবেদন সংগ্রহ পরিষেবাগুলির সাথে বা আপনার নিজস্ব ইন-হাউস সমাধান তৈরি করে রিপোর্টিং API কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও জানুন।
আমি কিভাবে কর্ম এই পরিবর্তন দেখতে?
Chrome 115 থেকে শুরু করে পরিবর্তনটি ক্রমান্বয়ে চালু করা হবে। আপনার ক্রোম ব্রাউজারে এটি ইতিমধ্যে রোল আউট না হলেও কর্মের এই পরিবর্তন দেখতে, আপনি এটিকে নিম্নরূপ চালু করতে পারেন:
-
chrome://flags/#origin-agent-cluster-default
খুলুন - সক্রিয় নির্বাচন করুন।
- Chrome পুনরায় চালু করুন।
আমি কি বিকল্প ব্যবহার করতে পারি?
সর্বোত্তম বিকল্প হল document.domain
মোটেও পরিবর্তন না করা, উদাহরণস্বরূপ পৃষ্ঠা এবং সমস্ত উপাদান ফ্রেমগুলি একই উত্সের হোস্ট করে৷ এটি সমস্ত ব্রাউজারের সমস্ত সংস্করণে কাজ করে। তবে এটির জন্য একটি অ্যাপ্লিকেশনের যথেষ্ট পুনঃ-কাজের প্রয়োজন হতে পারে, তাই ক্রস-অরিজিন অ্যাক্সেসকে সমর্থন করে এমন বিকল্পগুলিও দেখতে হবে।
document.domain
এর পরিবর্তে postMessage()
বা চ্যানেল মেসেজিং API ব্যবহার করুন
বেশিরভাগ ব্যবহারের ক্ষেত্রে, ক্রস-অরিজিন postMessage()
বা চ্যানেল মেসেজিং API document.domain
প্রতিস্থাপন করতে পারে।
নিম্নলিখিত উদাহরণে:
-
https://parent.example.com
একটি আইফ্রেমের মধ্যেhttps://video.example.com
অনুরোধ করেpostMessage()
এর মাধ্যমে একটি বার্তা পাঠানোর মাধ্যমে DOM ম্যানিপুলেট করার জন্য। -
https://video.example.com
মেসেজ পাওয়ার সাথে সাথে DOM ম্যানিপুলেট করে এবং সাফল্যের কথা অভিভাবককে জানিয়ে দেয়। -
https://parent.example.com
সাফল্য স্বীকার করে।
https://parent.example.com
এ:
// Send a message to https://video.example.com
iframe.postMessage('Request DOM manipulation', 'https://video.example.com');
// Receive messages
iframe.addEventListener('message', (event) => {
// Reject all messages except ones from https://video.example.com
if (event.origin !== 'https://video.example.com') return;
// Filter success messages
if (event.data === 'succeeded') {
// DOM manipulation is succeeded
}
});
https://video.example.com
এ:
// Receive messages
window.addEventListener('message', (event) => {
// Reject all messages except ones from https://parent.example.com
if (event.origin !== 'https://parent.example.com') return;
// Do a DOM manipulation on https://video.example.com.
// Send a success message to https://parent.example.com
event.source.postMessage('succeeded', event.origin);
});
এটি চেষ্টা করুন এবং দেখুন কিভাবে এটি কাজ করে. আপনার যদি নির্দিষ্ট প্রয়োজনীয়তা থাকে যা postMessage()
বা চ্যানেল মেসেজিং API-এর সাথে কাজ করবে না, তাহলে @ChromiumDev-এর মাধ্যমে Twitter- এ আমাদের জানান বা document.domain
ট্যাগ সহ Stack Overflow-এ জিজ্ঞাসা করুন।
একটি শেষ অবলম্বন হিসাবে, Origin-Agent-Cluster: ?0
হেডার পাঠান
আপনার কাছে যদি document.domain
সেট করা চালিয়ে যাওয়ার দৃঢ় কারণ থাকে, তাহলে আপনি Origin-Agent-Cluster: ?0
রেসপন্স হেডার টার্গেট ডকুমেন্টের সাথে পাঠাতে পারেন।
Origin-Agent-Cluster: ?0
Origin-Agent-Cluster
হেডার ব্রাউজারকে নির্দেশ দেয় যে ডকুমেন্টটি অরিজিন-কীড এজেন্ট ক্লাস্টার দ্বারা পরিচালনা করা উচিত কিনা। Origin-Agent-Cluster
সম্পর্কে আরও জানতে, Origin-Agent-Cluster
শিরোনামের সাথে কর্মক্ষমতা বিচ্ছিন্নতার অনুরোধ পড়ুন।
আপনি যখন এই শিরোনামটি পাঠান, তখন আপনার নথিটি ডিফল্টরূপে অপরিবর্তনীয় হয়ে যাওয়ার পরেও document.domain
সেট করা চালিয়ে যেতে পারে৷
অন্যান্য সমস্ত নথি যেগুলির জন্য এই আচরণের প্রয়োজন হয় সেগুলিকেও একটি Origin-Agent-Cluster
পাঠাতে হবে (মনে রাখবেন যে document.domain
যদি শুধুমাত্র একটি নথি সেট করে তবে কোন প্রভাব নেই)।
এন্টারপ্রাইজ নীতির জন্য OriginAgentClusterDefaultEnabled
সক্রিয় কনফিগার করুন
ঐচ্ছিকভাবে, আপনার প্রশাসক আপনার প্রতিষ্ঠান জুড়ে ক্রোম ইন্সট্যান্সে document.domain
ডিফল্টভাবে সেট করার জন্য OriginAgentClusterDefaultEnabled
নীতিকে false
কনফিগার করতে পারেন। আরও জানতে, Chrome এন্টারপ্রাইজ নীতি তালিকা এবং ব্যবস্থাপনা পড়ুন | ডকুমেন্টেশন
সম্পদ
-
Document.domain
- ওয়েব APIs | MDN - অরিজিন আইসোলেশন এবং ডিপ্রেকেটিং
document.domain
-
document.domain
বর্জন করা হচ্ছে। · ইস্যু #564 · w3ctag/design-reviews