【问题标题】:Insecure Content Warning for content served over http from Javascript File on Codeigniter Site来自 Codeigniter 站点上的 Javascript 文件的通过 http 提供的内容的不安全内容警告
【发布时间】:2012-10-31 23:30:29
【问题描述】:

对于在我的某些网页上提供的内容,Google Chrome 会返回不安全的内容警告。内容由 Codeigniter 中 assets/js 目录中的 Javascript 文件调用。 Javascript 文件通过引用在asset_helper 文件中设置的js_asset_url 加载到页脚中。

<script src="<?php echo js_asset_url('script.js'); ?>"></script>

我只在特定控制器上使用 SSL,因此资产文件夹内容当前加载不安全,并且由于显示的警告而让用户担心。有没有人有解决方案让 Codeigniter 强制通过 SSL 加载 .js 文件等资产?

编辑: 我终于修复了使用外部参考源(希望可以发布链接!) http://www.davidnard.com/2011/04/easy-ssl-redirection-in-codeigniter/ .js 文件调用的内容用于控制器中的 2 个函数。在 $partial 数组中设置相关的控制器(见上面的链接)就可以了。

【问题讨论】:

    标签: javascript codeigniter ssl https assets


    【解决方案1】:

    如果我使用绝对 URL 指向脚本文件,我通常通过 https 而不是 http 来引用它。比如 jQuery,我通过

    引用

    如果我使用标准 HTTP 协议,我的浏览器不会在意我是否正在尝试访问受保护的内容,并且可以正确处理使用 HTTPS。

    要使用您的代码处理此问题,您始终可以进行字符串替换。

    例如,在您的情况下,您可以执行以下操作:

    <!-- str_replace([needle], [replacement_text], [haystack]); -->
    <script src="<?php echo str_replace('http:', 'https:', js_asset_url('script.js')); ?>"></script>
    

    【讨论】:

    • 感谢您的建议给了我一个想法。我尝试作为替代更改行: $base_url = $obj->config->item('base_url');在资产助手中的函数'other_asset_url'中: $base_url = str_replace('http:', 'https:', $obj->config->item('base_url'));这会将所有可能不安全的资产更改为重定向到 https 而不仅仅是 js_asset_url。我找到了解决我问题的答案并将其编辑到我的原始帖子中,但感谢您的帮助
    • 太棒了。我通常在 .NET 世界中,但在必要时使用 PHP。感谢您的链接。这确实是一个优雅的解决方案。
    猜你喜欢
    • 2020-12-06
    • 1970-01-01
    • 2012-06-03
    • 2015-03-13
    • 2013-04-25
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 2016-05-17
    相关资源
    最近更新 更多