2

HTML 情報を表示するためにクラシック ASP ファイル (言語 = JavaScript) を使用しています。私がやりたいことは、ページがフレーム内にあるかどうかを確認し、そうでない場合は別のページにリダイレクトすることです。ページにクラシック ASP の親があるかどうかを確認する方法はありますか? を使用してみましwindowたが、認識されません。コードは次のようになります。

<%@ language = "JavaScript"%>
<!DOCTYPE html>

<html>

    <head>
        <meta http-equiv="content-type" content="text/html;charset=utf-8" />
        <title>Secure Area</title>

        <link href="css/basic.css" rel="stylesheet" type="text/css" media="all" />

        <%
            if (!window.parent)
                window.location.replace("index.html");
        %>

        <link href="Images/FavIcon.ico" rel="shortcut icon" type="image/x-icon" />
    </head>
</html>
4

3 に答える 3

2

あまり。

ブラウザーは、リソースを要求するときに、フレーム構造に関する情報をサーバーに送信しません。

HTTP Referer ヘッダー (オプションであるため、定義されていない可能性があります) を確認し、(サーバー側のコードを使用して) HTTP 要求をその URI に戻してから、それを解析してフレームが含まれているかどうかを確認できます。それらのデフォルトは、src="your uri"またはフレームをターゲットとするリンクがhref="your uri"…を持っている場合ですが、それは非常に非効率的で信頼性がありません.

この種のことは、クライアント側の JS でより適切に処理されます。

于 2012-10-14T11:43:48.217 に答える
1

javascriptでは、次の方法でページがiframe内にあるかどうかを確認できます。

if (window.top === window.self) {
    // not in a frame
} else {
    // in a frame
}

ASPでこれを行う方法はありません。サーバー側の言語は、それがフレームにレンダリングされているかどうかを認識しません-それはビジネスが知っていることではありません。

于 2012-10-14T12:30:17.750 に答える
1

ウィンドウがサーバー側のフレームにあるかどうかを確認することはできません。この情報を提供するリクエストには何もありません。

このクライアント側を行う必要があります-クライアント側のスクリプトで値をサーバーに渡すことができます(URLのパラメーター、非表示フィールド、Cookieなど...)。

于 2012-10-14T11:44:43.693 に答える