この記事の例では、クロスドメイン実装を実現するために js で document.domain を設定する際の注意点を分析します。皆さんの参考に共有してください。具体的な分析は次のとおりです。
ドキュメント.ドメイン
現在の Web ページのドメイン名を取得するために使用されます。
たとえば、アドレスバーに次のように入力します:
document.domain 属性に値を割り当てることもできますが、現在のドメイン名または基本ドメイン名にのみ割り当てることができるという制限があります。
例:
www.jb51.net が現在のドメイン名であり、jb51.net が基本ドメイン名であるため、上記の割り当てはすべて成功します。
しかし、次の代入では「無効なパラメータ」エラーが発生します:
cctv.net と www.jb51.net は現在のドメイン名でも、現在のドメイン名のベース ドメイン名でもないため、エラーが発生します。
これは、誰かが document.domain を悪意を持って変更して、ドメイン間でデータを盗むのを防ぐためです。
document.domain を使用してクロスドメインを実現します:
前提条件: これら 2 つのドメイン名は同じ基本ドメイン名に属している必要があり、使用されるプロトコルとポートは一貫している必要があります。そうでない場合、document.domain はクロスドメイン
に使用できません。JavaScript では、セキュリティ上の理由から、異なるドメインの 2 つ以上のページの相互運用が禁止されています。
同じドメインのページは問題なく相互運用できます。
例えば、aaa.com の Web ページ (a.html) では、iframe を使用して bbb.com の Web ページ (b.html) が紹介されます。
このとき、b.htmlの内容はa.htmlでも見ることができますが、javascriptを使って操作することはできません。 2 つのページは異なるドメインに属しているため、js は操作する前に 2 つのページのドメインが等しいかどうかを確認し、等しい場合は操作を許可します。等しくない場合は操作が拒否されます。
JSを使用してa.htmlとb.htmlを同じドメインに変更することはできません。ベースドメイン名が等しくないためです。 (JS でそれらを等しいフィールドに強制的に変更すると、上記と同じ「無効なパラメーター エラー」が報告されます)
したがって、aaa.com の別の Web ページを a.html に導入しても、ドメインは等しいため問題はありません。
別の状況として、2 つのサブドメインがあります:
aaa.xxx.com
bbb.xxx.com
aaa の Web ページ (a.html) は bbb の Web ページ (b.html) を導入します。
現時点では、b.html のコンテンツを a.html で操作することはできません。
document.domain が異なるため、1 つは aaa.xxx.com、もう 1 つは bbb.xxx.com です。
現時点では、JavaScript を通じて 2 つのページのドメインを同じに変更できます。
a.html と b.html の両方を追加する必要があります:
このようにして、2 つのページを相互に操作できます。つまり、同じ基本ドメイン名間の「クロスドメイン」が実現されます。
この記事が皆様の JavaScript プログラミング設計に役立つことを願っています。