2

モジュールWindowから渡された値を取得してC#変数に割り当てるJavaScriptがページにあるので、コードビハインド内で使用できます。したがって、私のJavaScriptは次のようになります。

JavaScript

<script type="text/javascript">

       function openSecure(args) {
           var manager = $find("<%= rwmSecure.ClientID %>");
           var domain = '<%=ConfigurationManager.AppSettings("CPCDomain").ToString %>';
           var URL;

           if (domain == 'localhost') {
               URL = 'http://localhost';
           }

           URL += "/WindowPage.aspx?args=" + args;
           manager.open(URL, "rwSecure");
       }
       function OnClientCloseSecure(oWnd, args) {
           var arg = args.get_argument();

           if (arg) {

               var ResultCode = arg.ResultCode;
               document.getElementById("hdnResultCode").value = ResultCode;
               var AuthCode = arg.AuthCode;
               var ReferenceNumber = arg.ReferenceNumber;
               var TransactionID = arg.TransactionID;
               var ErrorCode = arg.ErrorCode;
               var ErrorDescription = arg.ErrorDescription;
               var CardNumber = arg.CardNumber;
               var PONumber = arg.PONumber;
               //document.getElementById('<%=btn.ClientID %>').click();

               __doPostBack('pnlComplete', '');
           }
       }       
</script>

そして、これをもう少し明確にするために。モジュールウィンドウはローカルホストからページを取得していますが、モジュールウィンドウはローカルホスト:61156のページから呼び出されています。したがって、JavaScriptが変数を設定すると、asp.netボタンに対してクリックコマンドを発行して、コードを実行します。

C#コード

protected void btn_Click(object sender, EventArgs e)
{
    if (string.IsNullOrEmpty(hdnResultCode.Value)) {
        dspConfirm();
        pnlComplete.Visible = false;
        pnlConfirm.Visible = true;
    } else {
        dspComplete();
        pnlComplete.Visible = true;
        pnlConfirm.Visible = false;
    }

}

したがって、これを実行すると、次のようなjavascriptエラーが発生します。

Unsafe JavaScript attempt to access frame with URL http://localhost/SecurePayment.aspx?args=H4sIAAAAAAAEAOy9B2AcSZYlJi9tynt%2fSvVK1%2bB0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee%2b%2b999577733ujudTif33%2f8%2fXGZkAWz2zkrayZ4hgKrIHz9%2bfB8%2fIr578jMnL09%2b5k3etG%2fqbNlk07aolj%2bzi%2bdndsY7u%2f9PAAAA%2f%2f8VkT5ZIQAAAA%3d%3d&rwndrnd=0.23641548841260374 from frame with URL http://localhost:65116/ShoppingCart.aspx. Domains, protocols and ports must match.
b.RadWindow._registerChildPageHandlersScriptResource.axd?d=vMihE91hOtu6KBE47c3D9AjqD9Il5YI4LpCLhSvp5YZn6p98cl2a_AbJJmNWVZfnmjtLnCnYEoaBHBC919OsikIEmKq8TGOzWNWN_HUBLLo8fW7DdN4EuN3Q076lAa_FOwh_Yk2b3DL-W2Fv0&t=38ec0598:1125
b.RadWindow._onIframeLoadScriptResource.axd?d=vMihE91hOtu6KBE47c3D9AjqD9Il5YI4LpCLhSvp5YZn6p98cl2a_AbJJmNWVZfnmjtLnCnYEoaBHBC919OsikIEmKq8TGOzWNWN_HUBLLo8fW7DdN4EuN3Q076lAa_FOwh_Yk2b3DL-W2Fv0&t=38ec0598:1143
(anonymous function)ScriptResource.axd:47
Sys$UI$DomEvent$addHandler.browserHandlerScriptResource.axd:4048

それで、これを回避する方法またはこれを修正する方法はありますか?私は2日間頭をかいていて、キーボードを投げる準備ができています。:) ありがとう!

4

1 に答える 1

2

あなたのjavascriptエラーはかなり有益です。

安全でないJavaScriptは、URL http:// localhost :65116/ ShoppingCart.aspxのフレームからURLhttp:// localhost /SecurePayment.aspx?args=...のフレームにアクセスしようとします。ドメイン、プロトコル、および ポートは一致する必要があります

これは同一生成元ポリシーの例外のように聞こえます

このポリシーは、同じサイトから発信されたページで実行されているスクリプトが、特定の制限なしに互いのメソッドとプロパティにアクセスすることを許可しますが、異なるサイトのページ間でほとんどのメソッドとプロパティにアクセスすることを防ぎます。[1]

「オリジン」という用語は、ドメイン名、アプリケーション層プロトコル、および(ほとんどのブラウザーで)スクリプトを実行しているHTMLドキュメントのポート番号を使用して定義されます。これらすべての値が完全に同じである場合に限り、2つのリソースは同じ起源であると見なされます。

スクリプトは特定のポートのサイトのローカルマシンで実行されていますが、別のポートのローカルマシンのページにアクセスしようとしています。そこから始めます。

于 2012-04-19T14:50:41.513 に答える