【问题标题】:Wordpress template_directory functions ignore self signed SSLWordpress template_directory 函数忽略自签名 SSL
【发布时间】:2013-12-14 00:38:08
【问题描述】:

编辑 - 看起来问题的原因是 wordpress HTTPS 插件。如果我禁用它,它会按预期工作。

所有样式和脚本路径都使用 wordpress 方法 get_template_directory_uri() 或相关等效方法提供。 docs 在第一行非常清楚:

检索当前主题的模板目录 URI。检查 SSL。

但是,使用自签名 SSL 这仍然返回 http 路径,这当然会导致所有 css 和 js 失败。

我们是这样包含的:

<script src="<?php echo get_template_directory_uri(); ?>/js/lib/bootstrap-custom.js"></script>

有谁知道是否有一种解决方法不需要更改我们调用get_template_directory_uri() 的每个实例,或者这仅仅是因为 SSL 身份未验证该函数无法使用 https?

我们使用自签名 SSL 希望我们可以使用 Authorize.net 运行快速交易测试(无论如何,这可能不像自签名 SSL),因此我们不必购买实际的 SSL 进行可能需要 2 分钟的测试核实。这么多的捷径,是吧?任何意见表示赞赏。

【问题讨论】:

    标签: wordpress ssl https


    【解决方案1】:

    您必须深入挖掘才能找到它,但它所做的是检查当前正在处理的请求是否使用 SSL。

    基本上is_ssl()函数如下:

    function is_ssl() {
        if ( isset($_SERVER['HTTPS']) ) {
            if ( 'on' == strtolower($_SERVER['HTTPS']) )
                return true;
            if ( '1' == $_SERVER['HTTPS'] )
                return true;
        } elseif ( isset($_SERVER['SERVER_PORT']) && ( '443' == $_SERVER['SERVER_PORT'] ) ) {
            return true;
        }
        return false;
    }
    

    那么,您是否使用 https 请求访问此代码?

    【讨论】:

    • 那是我的第一次尝试。但是服务器端口返回 80,服务器协议返回 http/1.1 - 因此,任何打算检测自签名 SSL 的东西都不会接受它,尽管它允许通过带有标准不受信任警告的 https 提供页面。
    • 服务器是 Apache 吗?它是否在为您执行 SSL 然后对实际服务器进行 http 调用的某种代理后面?
    • 是阿帕奇。而且没有代理。
    【解决方案2】:

    查看 WooCommerce 如何在 template_directory_uristylesheet_directory_uri 上强制 SLL:

    https://github.com/woothemes/woocommerce/blob/master/includes/class-wc-https.php#L23

    【讨论】:

    • 看起来它只是在特定条件下强制执行,我可能会使用 is_page 来破解它。问题是,https 正在工作,但它不被视为 https。所以检测https的常规方法是行不通的。我一直在寻找一个用于一般强制验证的 php 选项。
    猜你喜欢
    • 2016-10-01
    • 1970-01-01
    • 2011-08-28
    • 2012-06-08
    • 2016-05-11
    • 2016-07-27
    • 2016-04-09
    • 2011-01-16
    • 2018-07-26
    相关资源
    最近更新 更多