1

Windows アプリケーションには、Web ブラウザーを開き、事前に構成された特定の Web サイトに移動し、データベースからのデータをフォームに自動入力する機能があります。これはユーザーにとって便利な機能です。

ここで、この機能の Asp.Net バージョンを構築して、ユーザーが Web アプリからリンク/ボタンをクリックし、(リダイレクトで? JavaScript で?) ページを開くようにします。次に、ユーザーがデータを確認して送信できるように、フォームに入力します。

これを行うには、外部ウィンドウをロードしているブラウザー フレームに JavaScript を挿入するか、そのウィンドウとやり取りできるようにする必要があると思います。

ブラウザーのセキュリティがこれを許可しないのではないかと心配しています。これは、ある種のスプーフィング攻撃のように見える可能性があります。これを行うにはどうすればよいでしょうか。

4

4 に答える 4

2

ドメイン、プロトコル、およびポートが、ポップアップを開く Web サイトとポップアップで開かれる Web サイトの間で一致しない場合、コードは同一生成元ポリシーに違反し、黙って無視されるか、例外をスローします。

以下に例を示します。

<!doctype html>
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<script type="text/javascript">
    openPopUp = function(href) {
        var props = "width=500,height=500,menubar=no,toolbar=no,scrollbars=yes";
        var win = window.open(href, href, props);
        if (win == null) alert("Your popup blocker is ruining my demo.");
        return win;
    };

    openMe = function(url){
        href = (url=="")?document.location:url;

        pu = openPopUp(href);

        //This will be ignored silently if Same Origin Policy is violated
        pu.onload = function() { 
            p = pu.document.createElement("p");
            p.appendChild(pu.document.createTextNode("onload was here."));
            pu.document.body.appendChild(p);
        };

        //This will throw an exception if Same Origin Policy is violated
        setTimeout(function() { 
            p = pu.document.createElement("p");
            p.appendChild(pu.document.createTextNode("setTimeout was here."));
            pu.document.body.appendChild(p);
        },3000);

        return false;
    }
</script>
<body>
<a href="" onclick="return openMe(this.href);">Self</a>
<a href="https://www.google.com/" onclick="return openMe(this.href);">Google</a>
于 2012-08-20T21:26:36.333 に答える
0

ブックマークレットを作成する必要があります。asp.netページから、ユーザーがブラウザーのブックマークにドラッグするリンクを作成します。ユーザーは、入力するページへのリンクをクリックします。次に、新しく作成したブックマークレットをクリックします。

純粋なJavaScriptではこれは不可能であるため、ブックマークレットを使用する必要があります。

于 2012-08-20T20:33:15.180 に答える
0

やろうとしていることを実行する最善の方法は、ブラウザ プラグインを作成することです。詳細については、こちらを参照してください。しかし、ブラウザ プラグインを使用すると、DOM を完全に制御できるようになり、JavaScript コードを挿入して実行することができます。必要に応じて、プラグインから Web サービスを呼び出すこともできます。

于 2012-08-20T21:17:50.370 に答える
0

シナリオ: base.aspx と popup.aspx の 2 つのページがあります。base.aspx のリンクをクリックすると、目的のデータで満たされた popup.aspx が開きます。base.aspx と popup.aspx の両方を制御できます

これらは、あなたがこれを達成できると私が思ういくつかの方法です

  1. popup.aspx に必要なデータが既に base.aspx に読み込まれている場合。次に、このデータをクエリ文字列で送信します(長すぎない場合)
  2. popup.aspx に必要なデータが既に base.aspx に読み込まれている場合。popup.aspx の window.opener を使用して、base.aspx からフォーム フィールドを読み取ります。注: window.opener は、ベースとポップアップの両方が同じドメインにある場合にのみ機能します。
  3. popup.aspx URL (http:///popup.aspx?actiodId=1234QWE6789) で識別子文字列を送信します。現在は popup.aspx の page_load で、actiodId でクエリを実行して DB からデータをフェッチします。
于 2012-08-20T21:01:41.463 に答える