4

我想使用 PHP 来检查页面是否在 iframe 中加载。最好但不是必需的,我希望在适用时拥有父母的网址。谢谢你。

4

4 回答 4

11

Php 无法告知发出请求的上下文。除了传递给它并作为服务器变量可用的内容之外,它什么都不知道。您可以将自己的 get 参数添加到要在将页面放入 iframe 时使用的 url,否则您就不走运了。

于 2012-09-24T23:11:12.303 回答
5

JavaScript为此需要;PHP绝对没有办法可靠地知道。在 JavaScript 中你可以使用

window.top === window.self;
于 2012-09-24T23:15:33.350 回答
0

我认为有可能通过 PHP 全局变量 $_SEVER["HTTP_REFERER"] 检测 iframe。在这个变量中是父窗口的 url。

于 2014-05-28T10:04:36.320 回答
0

的,在 2021 年,可以URL使用 PHP 的函数检查是否在 iframe 上嵌入get_header,我在下面的函数中做了这个:

public function allowEmbed($url = 'https://stackoverflow.com/') {

        try {
            $headers = get_headers($url);
        } catch (\Exception $e) {
            $headers = [];
        }

        $blackList = [
            'x-frame-options: sameorigin',
            'x-frame-options: allow-from',
            'x-frame-options: deny',
        ];

        $headers = array_map('strtolower', $headers);

        $check = array_intersect($blackList, $headers);

        if(!$check) {
            return ['status' => 1, 'message' => 'Passed'];
        } else {
            return ['status' => 0, 'message' => 'Fail'];
        }   
}
于 2021-08-11T09:18:25.620 回答