如何检查URL是否可在PHP中嵌入iframe?
有些网站不允许通过iframe嵌入。它们会产生以下错误:如何检查URL是否可在PHP中嵌入iframe?,php,iframe,x-frame-options,Php,Iframe,X Frame Options,有些网站不允许通过iframe嵌入。它们会产生以下错误: Refused to display 'https://news.ycombinator.com/news' in a frame because it set 'X-Frame-Options' to 'DENY'. 我们的应用程序允许用户提交URL。我们希望在服务器端检查该网站是否可以嵌入iframe并添加相应的标志。在客户端上,我们检查标志,要么执行iframe嵌入,要么只提供指向网页的直接链接 如何检查网站是否支持ifram
Refused to display 'https://news.ycombinator.com/news' in a frame because it
set 'X-Frame-Options' to 'DENY'.
我们的应用程序允许用户提交URL。我们希望在服务器端检查该网站是否可以嵌入iframe并添加相应的标志。在客户端上,我们检查标志,要么执行iframe嵌入,要么只提供指向网页的直接链接
如何检查网站是否支持iframe
X-Frame-Options
是服务器发送的响应标头,因此让服务器对您要测试的URL执行HTTP GET,查看X-Frame-Options
标头是否存在,以及是否。。。根据您的判断,您根本不可能被允许嵌入它。请尝试以下代码:
$url = "http://www.google.com/";
$url_headers = get_headers($url);
foreach ($url_headers as $key => $value)
{
$x_frame_options_deny = strpos(strtolower($url_headers[$key]), strtolower('X-Frame-Options: DENY'));
$x_frame_options_sameorigin = strpos(strtolower($url_headers[$key]), strtolower('X-Frame-Options: SAMEORIGIN'));
$x_frame_options_allow_from = strpos(strtolower($url_headers[$key]), strtolower('X-Frame-Options: ALLOW-FROM'));
if ($x_frame_options_deny !== false || $x_frame_options_sameorigin !== false || $x_frame_options_allow_from !== false)
{
echo 'url prevent iframe!';
}
}
我写了这个函数:
function allowEmbed($url) {
$header = @get_headers($url, 1);
// URL okay?
if (!$header || stripos($header[0], '200 ok') === false) return false;
// Check X-Frame-Option
elseif (isset($header['X-Frame-Options']) && (stripos($header['X-Frame-Options'], 'SAMEORIGIN') !== false || stripos($header['X-Frame-Options'], 'deny') !== false)) {
return false;
}
// Everything passed? Return true!
return true;
}
用于向页面发出请求并查找x-frame-options标头。嵌入reddit时返回true;没有捕捉到交叉原点标题。