文系素人がスクリプトとかFF11とかEQで遊ぶメモみたいなの

ほぼ個人的メモ帳のような備忘録(リンクはご自由にどうぞ)

System.security.allowDomain()

2007年10月10日 10時40分48秒 | ActionScript
swfをイジったりする時にドメインが違う場合、System.security.allowDomain()とやらでドメインを許可?しなくてはいけないのだが、ニコニコのバージョンアップでswfがres.nicovideo.jpになったせいでいろいろ問題が生じた。そのメモ。

■今回問題になった例1■
www.nicovideo.jpのJavaScript
2www.nicovideo.jpから呼ばれたres.nicovideo.jp/flvplayer_wrapper.swf
3上記のwrapperからloadMovieされたres.nicovideo.jp/flvplayer.swf

1から2をイジる(wrapperの一部の機能) ○
2から3をイジる(wrapperのメイン機能) ○
1から3をイジる(おそらくiroiroのメイン機能) ×

なんとなく分かるような分からないような・・・・
さらに

■その他の例2■
www.nicovideo.jpのJavaScript
2www.nicovideo.jpから呼ばれたres.nicovideo.jp/flvplayer_wrapper.swf
3上記のwrapperからloadMovieされたwww.nicovideo.jp/flvplayer.swf

1から2をイジる(wrapperの一部の機能) ○
2から3をイジる(wrapperのメイン機能) ×
1から3をイジる(おそらくiroiroのメイン機能) ○

この問題を解決するにはSystem.security.allowDomain("www.nicovideo.jp")とやって、「ボクのことイジってもokだよ!」みたいな設定をしないとダメなわけだが、例1も例2もイジられ役はflvplayer.swfなので、flvplayer.swfに許可をもらわないといけない。
ところがflvplayer.swfに許可ださせようとして、wrapperのreplaceFunction()のnico.OpenInput()あたりにallowDomain入れても許可されない。セキュリティ上の問題だから当たり前か。もともとのflvplayer.swfにallowDomainが入っていないとダメなわけだ。

1から2をイジるのはドメインが違ってもokなのは、単純にページのソースに埋め込まれているから許可されるんだろうか?そうならiroiro単体なら今までどおり動くってことだろうけど。


結局、イジられ役のflvplayer.swfにドメインを合わせないとダメなワケで、ドメインを全部統一するしかiroiroと共存させる方法はない(と思う)。

スレで紹介されてたオミトロンのフィルターは、以下のような状態にするためのもの(たぶん)。
■スレで紹介されてたフィルター■
www.nicovideo.jpのJavaScript
2www.nicovideo.jpから呼ばれたwww.nicovideo.jp/flvplayer_wrapper.swf
3上記のwrapperからloadMovieされたwww.nicovideo.jp/flvplayer.swf

1から2をイジる(wrapperの一部の機能) ○
2から3をイジる(wrapperのメイン機能) ○
1から3をイジる(おそらくiroiroのメイン機能) ○

res.nicovideo.jpに統一するのはちょっとめんどそうだから、wrapperの方で

loadMovie("http://res.nicovideo.jp/flvplayer.swf")



loadMovie("http://www.nicovideo.jp/flvplayer.swf")

に変更しないとダメってことか。

iroiro併用だとどうせフィルターも別になるからフィルター側で

flvplayer_wrapper.swf?flvplayer_domain=www.nicovideo.jp&ts=1234567

とかに置換して、phpで

if(flvplayer_domain == undefined){var flvplayer_domain = "res.nicovideo.jp";}
nico.loadMovie("http://" + flvplayer_domain + "/flvplayer.swf?ts=" + ts);

とかでいいか。

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。