我想使用PHP来检查页面是否在iframe中加载。优选地,但不是必需的,我希望在适用的情况下拥有父母的网址。谢谢。
答案 0 :(得分:8)
Php无法告知请求所针对的上下文。它除了传递给它并作为服务器变量可用之外什么都不知道。您可以将自己的get参数添加到将页面放入iframe时使用的网址,但是否则您运气不佳。
答案 1 :(得分:4)
JavaScript
是必需的; PHP完全没有办法可靠地知道。在JavaScript中,您可以使用
window.top === window.self;
答案 2 :(得分:0)
是,在 2021 年,可以使用 get_header
PHP 的函数检查 URL
是否嵌入 iframe,我在下面的函数中做了这个:
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'];
}
}
答案 3 :(得分:-1)
我认为有可能通过PHP全局变量$ _SERVER [" HTTP_REFERER#34;]来检测iframe。在这个变量中是父窗口的URL。