ডকুমেন্ট.ডমেন = ডকুমেন্ট.ডোমেন কী করে?


90

অরবিটেড (একটি ধূমকেতু সার্ভার) এর ক্লায়েন্ট-সাইড জেএস উপাদানটির প্রয়োজন হয় যে যদি সার্ভারটি অন্য কোনও ডোমেন বা জেএসের পোর্টে চলমান থাকে তবে আপনাকে অবশ্যই সম্পাদন করতে হবে

document.domain = document.domain;

অন্য কোনও জেএস লোড হওয়ার আগে। ( ডকুমেন্টেশন দেখুন ।)

এটি কি করে? এটি একটি নওপ মত দেখাচ্ছে! (আমি পরীক্ষা করে দেখেছি এবং এটি বাস্তবে প্রয়োজনীয়))

উত্তর:


203

আমি আসলে এই কোডটি লিখেছি।

ক্রস-সাবডোমেন / পোর্ট ধূমকেতু করার চেষ্টা করার সময়, iframe document.domainএর প্যারেন্ট ফ্রেমের সমান মান হওয়া দরকার। দুর্ভাগ্যক্রমে, ব্রাউজারটি মূল document.domainমানটির জন্য অভ্যন্তরীণভাবে ডোমেন নাম এবং পোর্ট সংরক্ষণ করে । তবে জাভাস্ক্রিপ্টে গেটর এবং সেটার বন্দরটি সম্পর্কে কিছুই জানে না। সমস্যা তাই এই হল: উপরে ফ্রেম যদি document.domainহয় ('example.com', 80), এবং নীচে ফ্রেম হয় ('comet.example.com', 80), কেমন নীচে ফ্রেম হতে পেতে পারি ('example.com', 80)পাশাপাশি?

আপনি পারবেন না, কারণ হোস্টনামের অংশটি পরিবর্তন করার ফলে পোর্টটি সেট আপ হয়ে যাওয়ার প্রয়োজন হবে null, তাই আপনি যা করতে পারেন তা হ'ল ('example.com', null)নীচের ফ্রেমে। সুতরাং শীর্ষ ফ্রেমটিও সেই মানটিতে সেট করা document.domain=document.domainদরকার এবং সেটিংস ঠিক সেভাবে করে। এটা তোলে থেকে ব্রাউজারে অভ্যন্তরীণ উপস্থাপনা পরিবর্তন ('example.com', 80)করতে ('example.com', null)এবং তারপর সবকিছু আপ সাথে মেলে এবং ক্রস-পোর্ট / সাবডোমেন ফ্রেম যোগাযোগ কাজ করে।


দুর্ভাগ্যক্রমে এই সমাধানটি আমার পক্ষে কাজ করে নি ( বিশদ জন্য স্ট্যাকওভারফ্লো . com/ প্রশ্নগুলি / 977৯676767//২ দেখুন)। সমস্ত ফ্রেমে 'ডকুমেন্ট.ডোমেন = ডকুমেন্ট.ডোমেন' যুক্ত করা ক্রোমের আচরণ পরিবর্তন করে না। কোন ধারনা?
স্টিফেন গ্রস

এছাড়াও, আমি বুঝতে পেরেছিলাম যে আমি যদি আমার জেএসের জন্য বিলম্ব নির্ধারণ করি তবে আমি কমপক্ষে উভয় ফ্রেমের জন্য বৈধ-চেহারা URLs পেয়েছি। তবুও, যদিও একটি ফ্রেম অন্য ফ্রেমে অ্যাক্সেস করতে পারে না।
স্টিফেন গ্রস

6
এমডিএন-এ কীভাবে অদ্ভুত "লুকানো" বন্দর কাজ করে তার আরও একটি ব্যাখ্যা রয়েছে: ডেভেলপার.মোজিলা.আর.ইন
সমে_রিগিন_পলসি__ জাভা স্ক্রিপ্ট

4
আহা, সুতরাং আপনি এই বিপর্যয়কর বিট কোডের জন্য অপরাধী। লাইনকে ধন্যবাদ জানাই, এটি চালানোর পরে (এবং ডকুমেন্ট.ডোমেন সেট) যে কোনও গতিশীলভাবে তৈরি আইফ্রেমকে ক্রস-ডোমেন হিসাবে সেট করা হয়েছে এবং এইভাবে নতুন নির্মিত আইফ্রেমে আর অ্যাক্সেস করা যাবে না। : /
crappish

@ এমজেএস হ্যাঁ: পোর্ট নম্বরটি ব্রাউজার দ্বারা আলাদাভাবে রাখা হয়। ডকুমেন্ট.ডোমেন = ডকুমেন্ট.ডোমেন সহ সেটারে যে কোনও কল পোর্ট নম্বরটি নাল দিয়ে ওভাররাইট করে। সুতরাং কেউ প্রথমে ডকুমেন্ট.ডোমেন = "Company.com" সেট করে Company.com.com এ কথা বলতে পারেন না। এটি উভয়ই সেট করতে হবে যাতে পোর্ট সংখ্যা উভয় নাল হয়।
রই নমির

38

ব্রাউজারগুলি (ক) ডকুমেন্ট.ডোমেন যখন স্পষ্টভাবে সেট না করে এবং (খ) ডকুমেন্ট.ডোমেন যখন স্পষ্টভাবে সেট করা থাকে তার মধ্যে পার্থক্য করে ... এমনকি যদি তারা একই মান ফেরত দেয়।

স্পষ্টভাবে মান নির্ধারণ করা অন্য সাবডোমাইন (একই প্যারেন্ট ডোমেনের অধীনে) একটি স্ক্রিপ্টের সাথে "সহযোগিতা" করার অভিপ্রায় নির্দেশ করে।

যদি মূল পৃষ্ঠার বাইরে এবং বাহ্যিক স্ক্রিপ্ট সুস্পষ্টভাবে ডকুমেন্ট.ডোমেনটিকে একই মান হিসাবে সেট করে, একই-উত্স নীতি নিষেধাজ্ঞাকে বাইপাস করা যেতে পারে এবং প্রতিটি স্ক্রিপ্ট একে অপরের প্রসঙ্গের সমস্ত (অন্যথায় সীমাবদ্ধ) বস্তু এবং বৈশিষ্ট্যে অ্যাক্সেস করতে পারে।


9

আমি এই সাইটে নিম্নলিখিত তথ্য পেয়েছি: দেবগুরু । আরও দৃ concrete়ভাবে, এখানে উদ্ধৃতি:

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

আমার কাছে মনে হচ্ছে এটি একই ডোমেনের জন্য ক্রস সাইট স্ক্রিপ্টিংকে মঞ্জুরি দেয় (সাবডোমেনটি ভিন্ন হলেও)।

আমি মনে করব যে আপনি যদি ডকুমেন্ট.ডোমেন স্পর্শ না করেন তবে জেএস ইঞ্জিন কেবল একই ডোমেন থেকে অন্যান্য জাভাস্ক্রিপ্টকে মঞ্জুরি দেয়। এই সম্পত্তি সহ, আপনি কক্ষপথ ডক্স রাষ্ট্রের মতো অন্যান্য উপ-ডোমেনে স্থাপন করতে সক্ষম হবেন ।


6
যে ব্যাখ্যা না কেন document.domain = document.domainহয় না একটি NOOP।
ক্রিসেন্ট টাটকা

4
কেবল একটি বন্য অনুমান, তবে আমি যেমন বলেছিলাম আমি অনুমান করি যে সম্পত্তিটি যখনই কোনও মান সেট করা হয় কেবল তখনই ট্রিগার করা হয়।
মিগুয়েল পিং

6

document.domainযদি স্পষ্টভাবে সেট না প্রকৃত URL থেকে একটি ডিফল্ট pulls। ব্রাউজারগুলি রেকর্ড করবে যদি document.domainইউআরএল থেকে ডিফল্ট হিসাবে আসে বা এটি স্পষ্টভাবে সেট করা থাকে। উভয়ই একই ডোমেনের জন্য ডিফল্ট হতে হবে অথবা এটি কাজ করার জন্য উভয়কে অবশ্যই একই ডোমেনে সেট করতে হবে set যদি একটি ডিফল্ট হয় এবং একটি স্পষ্টভাবে সেট করা থাকে তবে উভয়টি মিলে যদি পড়া হয় তবে দুটি পৃষ্ঠাগুলি একে অপরের সাথে কথা বলতে নিষেধ থাকবে।

দেখুন: https://developer.mozilla.org/en-US/docs/DOM/docament.domain

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