【问题标题】:Need to load http js and css over https - getting mix_content error需要通过 https 加载 http js 和 css - 出现 mix_content 错误
【发布时间】:2018-01-09 17:18:43
【问题描述】:

我正在尝试在 https 网站的 iframe 中加载 http 网站。我知道它会给我 js 和 css 的混合内容错误,所以要解决混合内容,我使用如下代理:

$url = "http://www.myweb.com";
$PROXY_HOST = "47.52.24.117"; // Proxy server address
$PROXY_PORT = "80";    // Proxy server port
$PROXY_USER = "";    // Username
$PROXY_PASS = "";   // Password
// Username and Password are required only if your proxy server needs basic authentication

$auth = base64_encode("$PROXY_USER:$PROXY_PASS");
stream_context_set_default(
 array(
  'http' => array(
    'method'=>"GET",
    'proxy' => "tcp://$PROXY_HOST:$PROXY_PORT",
    'request_fulluri' => true,
    'header' => "Proxy-Authorization: Basic $auth"
   // Remove the 'header' option if proxy authentication is not required
  )
 )
);
$res = file_get_contents($url);
echo $res;

但我仍然收到 js 和 css 的混合内容错误。 (图片和 html 内容在 https 下可以正常加载)。

【问题讨论】:

    标签: php proxy file-get-contents


    【解决方案1】:

    这主要是评论 - 但这里评论框中的空间有限。

    首先,您没有提及您使用的是什么浏览器。 MSIE 可能会针对一些非混合内容的内容引发此错误。如果您使用的是 MSIE,您可能会尝试使用其他浏览器,看看问题是否是 Microsoft 的怪癖之一,或者问题是否真的出在您的代码中。

    当您说“如下所示”时,我希望这不是您用来从远程站点检索内容的代码,因为您在此处对 URL 进行了硬编码。我将通过前端控制器、mod_rewrite 或 404 处理程序处理这件事,您没有告诉我们,您已验证代理脚本正确翻译了 URL/提供的内容是你期望什么,并在测试之间清除缓存......

    您是否检查过您正在下载的脚本和 CSS 不包含指向 http:// 网址的网址?

    您向我们展示的代码还有一个问题是它没有检查/传递 mimetype。

    【讨论】:

    • 我使用的是 Chrome 和 Firefox 浏览器。出于测试目的,我将硬编码的 url 放在这里,否则 url 会在网站中动态加载。我也清除浏览器缓存并在私人浏览器中进行测试。我也尝试过添加 mimetype。 js、css 和 img 都有 http:// url,但是 js 和 css 在开发工具 firebug 中显示混合内容错误。
    猜你喜欢
    • 1970-01-01
    • 2014-07-25
    • 2016-06-22
    • 2020-09-27
    • 1970-01-01
    • 2018-11-17
    • 2011-02-13
    • 1970-01-01
    相关资源
    最近更新 更多