iframe不显示网站样式

时间:2019-01-28 13:39:13

标签: 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);
  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

1 个答案:

答案 0 :(得分:1)

感觉好像问题全都围绕着您的设置:

  

使用php重定向在(https)网站上投放(http)页面。

您正在违反协议。检查调试器工具的“网络”选项卡。我愿意打赌,您会看到有关通过HTTPS调用不安全资源的错误。 (以上消息:

加载HTTP页面时,很可能会通过HTTP调用.css文件-这违反了规则。

将您的CSS更新为通过HTTPS调用。该问题可能会消失。

另一个要注意的是,您可能有一个css处理器(例如lesscss)也被不安全地加载,因为它是由.net制作的-很有可能包括不安全地加载ALSO的脚本。这些也会导致您的调用出现问题(您的错误消息:浏览器无法调用框架的错误消息。可能是因为脚本不安全并且无法加载脚本,因为不允许HTTPS加载不安全的资源)

[以下是解决方法。我强烈建议不要这样做。将页面上的资源加载与页面本身相同。这是一个糟糕的解决方案,但它会起作用。这是一个不好的解决方案,一个不好的做法,它是不安全的,这是您永远都不应做的所有事情……但是通过通过HTTPS提供HTTP页面来跳过系统也是这样。您确实应该通过HTTPS服务;如果要求我检查该代码,则将其丢弃并说“修复”。]

如果您无法通过HTTPS访问CSS /脚本-通过修改PHP提供的代码,由PHP为CSS提供服务。 (使用模式匹配或正则表达式替换您的PHP版本的CSS地址,然后投放该页面。)