2

我正在使用经典 ASP 文件(语言 = JavaScript)来显示一些 HTML 信息。我想要做的是检查页面是否在框架中,如果没有,则重定向到另一个页面。有没有一种方法可以检查页面是否在 Classic 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 标头(它是可选的,因此可能未定义),向该 URI 发出 HTTP 请求(使用您的服务器端代码),然后解析它以查看它是否包含任何帧,以及是否有任何帧它们默认为src="your uri"或者如果任何以框架为目标的链接具有href="your uri"……但这将非常低效且不可靠。

这种事情最好用客户端 JS 处理。

于 2012-10-14T11:43:48.217 回答
1

您无法检查窗口是否在服务器端的框架中 - 请求中没有任何内容可以为您提供此信息。

您需要在客户端执行此操作 - 您可以让客户端脚本将值传递给服务器(URL 上的参数、隐藏字段、cookie 等等……)。

于 2012-10-14T11:44:43.693 回答
1

在 javascript 中,您可以检查页面是否在 iframe 中:

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

在 ASP 中没有办法做到这一点。没有服务器端语言会知道它是否在框架中呈现 - 这不是它的业务知道。

于 2012-10-14T12:30:17.750 回答