2009-07-23 17 views
3

ドメインBでPHPスクリプトが実行されていて、JSの生成時に呼び出されます。奇妙なJavascript /クロスサイトのクッキーの問題

アイデアは、与えられたhtmlページに私が持っているということです。だから、

<script src="http://b.domain/myscript.php"></script> 

ページのロード時、スクリプトが呼び出され、JSが生成され、ローカルページ上で実行します。

問題は、myscript.phpがBのドメインCookieに依存していることです。アドレスバーにhttp://b.domain/myscript.phpと入力すると、スクリプトは正常に動作し、ブラウザウィンドウにJSテキストが表示されます。

しかし、別のWebサーバー上で実行されているWebページに上記の引用符を含めた場合は、Aとしてください。 JSはまだ生成されていますが、スクリプトに利用可能なCookieがないため、間違っています。

したがって、要するに、直接スクリプトにアクセスし、クッキーが利用可能で、すべてがうまくいきます。 別のドメインから提供されたページからの呼び出しを介してスクリプトにアクセスすると、Cookieにアクセスできない。

私は、Bドメインで動作しているスクリプトの呼び出しで、ブラウザがBのCookieを送信していないように見える理由を理解していませんか?

+0

OSとブラウザのバージョンを指定すると、回答が得られる可能性があります。または、これはすべてのブラウザで発生しますか? – jsight

+0

ブラウザはFirefox(最新バージョン)、ドメインAはローカルマシン(WinXP)のApache、ドメインBはRedhat LinuxボックスのApacheです。火かき棒を使ったクイックチェックは、Bのクッキーがmyscript.phpの呼び出しに含まれていないことを示しています。 – PaulJWilliams

答えて

1

これはセキュリティ機能です。 Cookie情報は、Cookieを設定したドメイン以外のドメインでは使用できません。詳細はhttp://en.wikipedia.org/wiki/Cross-site_scriptingを参照してください。

+0

しかし、Bで実行されるスクリプトはBのクッキーしか必要としません。クッキーは、設定したドメイン以外のドメインに送信する必要はありません。 – PaulJWilliams

+0

_script_がどのサーバから来たかは問題ではありません。このスクリプトは_page_が由来するドメインのCookieでしか動作しません。それ以外の場合は、たとえば、自分のサイトにGoogle Codeでホストされているスクリプトを含めることができます。そのページにアクセスしたときに、自分のサイトでスクリプトを使用してGoogleのCookieを盗み出し、Gmailアカウントにアクセスできます。 – NickFitz

+0

スクリプトはクッキーを使用しません - 元のページで実行するクライアントサイドJSを生成するserversideスクリプトのみ。 – PaulJWilliams