2008年01月16日

Flash | クロスドメインでのリダイレクト

例えば「www.example.com/base.swf」のFlashコンテンツから「before.example.net/cgi-bin/data.cgi」というURLに対してCGIのリクエストを行っているとする。クロスドメインなリクエストになるので、このURLでのCGI呼び出しの前に「before.example.net/crossdomain.xml」が読み込まれる。

さて、今日あるトラブルにより、Flashは何もいじらないまま「before.example.net」へのCGIリクエストを「after.example.net」に転送させる必要があった。そのためまずbefore.example.netのApacheでmod_rewriteを使って全リクエストをafter.example.netにリダイレクトさせるようにした。

ところが、これだと
・Flash → before.example.net/crossdomain.xml →(リダイレクト)→ after.example.net/crossdomain.xml
となり、Flashコンテンツは「after.example.net」に対してリクエストを許可されることになる。つまり、以降の「before.example.net」へのリクエストは許可されていないことになりFlashからリクエストは送信されない。

解決策としては、「before.example.net/crossdomain.xml」は転送しないでそのままFlashに返すようにする。こうすると
・Flash → before.example.net/crossdomain.xml
・Flash → before.example.net/cgi-bin/data.cgi →(リダイレクト)→ after.example.net/cgi-bin/data.cgi
といった望ましい挙動となった。

要するにFlashからのリクエストをリダイレクトする場合、crossdomain.xmlへのリクエストはリダイレクトしてはいけないということ。

Posted by otsuka : 17:40 | Comment (0) | Trackback (0)
Comment









名前、アドレスを登録しますか?