2012-04-19 4 views
2

モジュールウィンドウで渡された値を受け取り、それをコード内で使用できるようにC#変数に割り当てるJavaScriptがページにあります。C#変数への安全でない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> 

そして、このもう少し明確にする:だから私はJavaScriptは次のようになります。モジュールウィンドウはlocalhostからページを取得していますが、モジュールウィンドウはlocalhost:61156のページから呼び出されています。 javascriptのは、それがまた、いくつかのコードを実行するためにasp.netボタンをクリックコマンドを発行variavle設定したらそう:

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日間頭を撫でていて、私はキーボードを投げる準備ができています。 :)ありがとう!

+0

「SecurePayment」というページに変数を渡すためにjavascriptを使用すると、自己矛盾しているように見えますが、JavaScript自体でも「安全でないJavaScript」_ _--)に文句を言う面白い –

+0

私は同意しますが、使用されています。 :-P –

答えて

2

あなたのjavascriptエラーはかなり有益です。 URL httpでフレームにアクセスするための

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

このポリシーが無い特定 制限が互いのメソッドやプロパティにアクセスするには、同じ サイトから発信ページ上で実行中のスクリプトを許可しますが、へのアクセスを防止Same Origin Policy

と例外のように聞こえますほとんどのメソッドとプロパティ 異なるサイトのページを渡ります。[1]

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

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