locked
Silverlight2コンテンツから、JavascripでPOSTできない(クロスドメイン環境) RRS feed

  • 質問

  • 現在Silverlight2でコンテンツを制作しており
    以下状態にてJavascriptを利用し、FORMでPOSTしております。

    HTMLとXAPが同一サーバにある場合は、問題なく動作するのですが
    クロスドメイン環境ではPOSTできなくなくなります。
    どなたか解決法をご教授願えませんでしょうか?

    「clientaccesspolicy.xml」や「crossdomain.xml」は設置し
    検証済みです。


    ---------------------------------------------------------------
    ◆動作しない例
    ○ページ
    http://aaa.com/index.html
    xapは、HTMLとは別サーバ

    ○xapファイル
    http://bbb.com/xxx.xap

    「ページ」にて外部JSファイルを読み込み
    Silverlightコンテンツから、そのJavascriptを読み出し実行

    ○C#でJavascriptの実行
    HtmlPage.Window.Invoke("postFunc", sendStr);

    ○Javascript
    function postFunc(xxx){
     var formData = document.createElement('FORM');
     document.body.appendChild(formData);
     
     var formInput = document.createElement('input');
     formInput.name = 'id';
     formInput.value = xxx;
     document.forms[2].appendChild(formInput);

     method = 'post';
     action = 'http://aaa.com/test.html';
     submit();
    }

    ---------------------------------------------------------------

    2009年7月24日 13:35

すべての返信

  • コードでの情報を見る限り、SilverlightからのPOSTでなく、JavascriptでPOSTを行おうとしているので、Javascriptのクロスドメイン制限に引っかかっている様に見受けられます。
    ※ 動作は未検証で恐縮です

    また、コード例に関しては
    > method = 'post';
    > action = 'http://aaa.com/test.html';
    > submit();
    この部分は親のDOM要素の変数のプロパティとして呼び出す必要があると思います。


    まず、以下の検証を行ってみてはいかがでしょうか?
    1.Silverlight内でPOSTの操作を行う
    ※Silverlight内ではクロスドメインが大丈夫か確認
    2.Silverlight内でPOSTが送れた場合は、Javascriptで同一ドメインに対してPOSTを送信
    ※javascriptコードのデバッグ

    以上、よろしくお願いいたします。
    2009年7月28日 7:56
  • 割と普通さん
    ご教授ありがとうございます。

    ご指摘の検証にて調べた結果、
    クロスドメイン環境下での、SilverlightからのDOMアクセスが
    制限されていました。

    パラメーターに下記を追加することで、問題が解決しました。
    ありがとうございました。

    <param name="EnableHtmlAccess" value="true"/>

    ◆詳細
    http://msdn.microsoft.com/ja-jp/library/system.web.ui.silverlightcontrols.htmlaccess(VS.95).aspx
    2009年7月29日 1:29
  • >
    > ご指摘の検証にて調べた結果、
    > クロスドメイン環境下での、SilverlightからのDOMアクセスが
    > 制限されていました。
    >
    > パラメーターに下記を追加することで、問題が解決しました。
    > ありがとうございました。
    >
    > <param name="EnableHtmlAccess" value="true"/>
    申し訳ありません、指摘した内容とは別の原因でしたね・・・。
    ちゃんと検証をすべきだったか・・・orz

    問題が解決されたなら何よりです。
    開発がんばってください。


    以上、よろしくお願いいたします。
    2009年7月29日 2:02