同一出身ポリシー(同一オリジンポリシー)について

javascript

同一出身ポリシー(同一オリジンポリシー)について

javascriptで読み込まれたプログラムが、1つのサーバ(ドメイン)から読み込まれた場合、
特に問題なく動作しますが、2つのサーバA、Bがあり、サーバAにアクセスした際に、サーバBのjavascriptを読み込む実装方法も実現できます。

この時に同一出身ポリシーの考え方と挙動が適用されるので理解と注意が必要です。

同一出身ポリシーについて簡単にまとめます。

・①サーバAから読み込まれたjavascriptはサーバBのドキュメントにアクセスすることはできない。
・②同じポリシーのウィンドウや、ドキュメントにはアクセスができる。
・③プロトコル(httpやhttps)が異なる形でドキュメントがロードされた場合、別な出身ポリシーとなる。
・④javascriptのプログラムファイルは、別サーバからロードしても、動作に問題はでない。
(サーバAにあるjavascriptプログラムを、サーバBで読み込んだ場合、サーバBにあるドキュメントにアクセスができる)
・⑤AJAX等の通信時にも同一出身ポリシーが適用され、サーバAからAJAX通信をした場合、サーバBにアクセスすることはできない。(注…javascriptライブラリの実装方法で別サーバ間での通信を行う技術的解決方法はある)
・⑥サブドメインを利用したサーバ間通信では、別なサーバとみなされる。(javascriptのDocumentオブジェクトの設定方法により、同一出身ポリシーとみなし、それぞれ別なサブドメインにアクセルする方法はある)

細かい部分では実際に開発を進めていく上で挙動を確認しながら把握することがよいと思います。

④については、AJAX通信を利用し、jsonp形式のコールバック関数経由で別サーバへの通信を行うことができます。
上記はjqueryライブラリを利用することで実装ができます。

また、最近ではjqueryライブラリ以外のjavascriptフレームワークが主流になってきているので、それぞれのフレームワークのドキュメントをもとに開発するケースが多いです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です