Php Iframe不显示站点样式
使用php重定向在(https)站点上服务(http)页面。当iframe加载时,页面的样式不会显示,但会显示站点 PHP重定向Php Iframe不显示站点样式,php,iframe,Php,Iframe,使用php重定向在(https)站点上服务(http)页面。当iframe加载时,页面的样式不会显示,但会显示站点 PHP重定向 <?php if (isset($_GET['url'])) { $url = $_GET['url']; $ch = curl_init(); $timeout = 5; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); c
<?php
if (isset($_GET['url'])) {
$url = $_GET['url'];
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
echo $data;
}
?>
iFrame
<iframe src="https://sample/redirect.php?url=http://sample2/form/sampleform.aspx" style="width:100%;height:1200px;" frameborder="0" scrolling="auto" allowfullscreen></iframe>
浏览器检查器显示
ReferenceError: validationSummary is not defined
Loading failed for the <script> with source
ReferenceError:未定义validationSummary
加载具有源的的的失败
这感觉好像问题都围绕着你的设置:
使用php重定向在(https)站点上服务(http)页面
你违反了规矩。检查调试器工具的“网络”选项卡。我敢打赌,您将看到关于通过HTTPS调用不安全资源的错误。(以上讯息:
当HTTP页面加载时,它很可能通过HTTP调用其.css文件,这是违反规则的
更新CSS以通过HTTPS调用。问题可能会消失
另一个注意事项是,您可能有一个css处理器(例如lesscss)也被不安全地加载,因为它是用.net制作的-很可能有一些脚本包含也被不安全地加载。这也会导致您的调用出现问题(您的错误消息:浏览器无法调用框架的错误消息。可能是因为脚本不安全,无法加载脚本,因为HTTPS不允许加载不安全的资源。)
[以下是一个解决方法。我强烈建议您不要这样做。加载页面上的资源与加载页面本身一样。这是一个糟糕的解决方案,但它会起作用。这是一个糟糕的解决方案,是一种糟糕的做法,不安全,这是您永远不应该做的一切……但通过HTTPS提供HTTP页面来绕过系统也是如此。您真的是这样吗ly应该通过HTTPS提供服务;如果让我检查代码,我会扔掉它并说“修复它”。]
若您不能通过HTTPS访问CSS/脚本,那个么PHP可以通过修改PHP提供的代码来提供CSS(使用模式匹配或正则表达式替换PHP版本CSS的地址,然后提供页面)这并不是那么简单……您还需要修改iframe尝试加载的外部资源的来源-如果它们是使用绝对URL嵌入的,您需要将
http://
替换为https://
,以便浏览器不会将它们作为混合内容进行阻止,如果是相对URL,则您将你需要自己把它们变成绝对值,否则它们会用你网站的基本地址来解决。