使用HTTPS加载style.css和jQuery

时间:2013-07-02 作者:RAC

我们有几个环境,我们刚刚开始使用wordpress(开发、QA、预生产、生产等)。我们在较低的环境中没有启用https,一切都很顺利。在我们的prod环境中,站点将所有流量重定向到https。

第一个问题似乎只与chrome有关。Chrome拒绝在页面上加载任何非https的内容。我不确定如何让WordPress加载jquery或样式。css(来自我的主题)通过https(更多信息见下文)。

HTTPS的第二个问题是,我们无法在使用HTTPS的环境中登录wordpress。当登录屏幕加载(sitename.com/wp admin)时,您会按照预期被重定向到wp登录,但输入用户名/密码后,页面就会刷新。无错误(检查了控制台/firebug和httpfox,未找到任何错误)。

我知道我们在使用https时通常会出错,因为我们在支持它的环境中遇到了很多问题。我在google上搜索了很多次,但对于如何使用HTTPS和wordpress,我并没有太多的想法。除了回答如何通过HTTPS加载jquery以及如何登录HTTPS wordpress实例等问题外,还有关于如何在wordpress中使用HTTPS的好链接吗。我发现几乎所有的东西都指向使用WordPress HTTPS插件,我们将尝试这样做,但我不确定它是否能解决我们所有的问题。

注意*在我的函数中。php我使用Enqueue以正确的方式加载JS和CSS文件,并在这些加载上使用相对路径//sitename。com/bla/bla工作正常。我在我的标题中使用:加载jquery。php和样式。css是作为我的主题加载的一部分自动加载的,所以我不知道如何配置通过HTTPS加载,或者这是否是解决这些问题的正确方法。(jQuery是从本地文件系统加载的,不是CDN)。任何帮助都将不胜感激。提前谢谢。

4 个回复
最合适的回答,由SO网友:RAC 整理而成

我们找到了一个解决方案,它似乎纯粹是环境问题,就像我们的环境是如何设置的一样。碰巧,我们的MySQL服务器和实际服务器不在同一个框中,wordpress需要明确知道路由到MySQL框的请求和包含实际代码的框之间的区别。因此,解决方法在于确定哪些数据库条目指向SQL,哪些数据库条目指向web服务器。

一旦我们知道了如何设置环境以便登录,我就启用了HTTPS插件,并且我们能够正常加载站点,解决了chrome中被阻止的非http请求的问题。

SO网友:webaware

由于您支持负载平衡器(在上面的评论中确认),您的WordPress安装won\'t be able to detect SSL using the is_ssl() function, 并且不会使用https:protocol-uri为任何排队的脚本或样式表提供服务。

如果您在支持的负载平衡器后面HTTP_X_FORWARDED_PROTO 服务器变量,您可以通过将此代码段添加到wp配置来修复问题。php文件:

// Amazon AWS Elastic Load Balancer, CloudFlare, and some others
if (isset($_SERVER[\'HTTP_X_FORWARDED_PROTO\']) && $_SERVER[\'HTTP_X_FORWARDED_PROTO\'] == \'https\')
    $_SERVER[\'HTTPS\']=\'on\';
如果您不幸被托管在网络解决方案上,请先把头靠在桌子上,然后尝试将此要点应用到已激活的插件中(因为您无法登录到管理员,所以无法激活新插件):https://gist.github.com/webaware/4688802

实际上,您应该能够强制管理员不使用SSL、登录、安装您需要的任何插件,然后test 在强制使用SSL之前,通过SSL进行安装,以查看是否一切正常。将此添加到您的wp配置中。php文件,更改WP_SITEURLWP_HOME 以匹配真正的服务器。

define(\'FORCE_SSL_LOGIN\', false);
define(\'FORCE_SSL_ADMIN\', false);
define(\'WP_SITEURL\', \'http://example.com/\');
define(\'WP_HOME\', \'http://example.com/\');

SO网友:Wyck

大多数SSL问题都是由于插件/主题使用错误的代码加载CSS/JS造成的。

在WordPress常规设置下,将WordPress地址(URL)和站点地址(URL)从HTTP更改为HTTPS。如果您没有访问管理员的权限,可以通过wp-config.php http://codex.wordpress.org/Editing_wp-config.php

使用主题和插件的正确url路径:http://codex.wordpress.org/Determining_Plugin_and_Content_Directories 例如,硬编码WP_PLUGIN_URL 将不起作用plugin_dir_url. 这些函数通常是SSL友好的,因为它们有时间检查站点是否启用了SSL,常量是否启用了SSL。

对于管理员/登录,您可以通过wp-config.php:

登录名:define(\'FORCE_SSL_LOGIN\', true);

管理员:define(\'FORCE_SSL_ADMIN\', true);

当然,任何硬编码的资产都是一个问题,或者插件/主题加载不正确。

如果您的服务器libssh2 , 您还可以定义端口#和身份验证密钥。如果启用了此选项,则无需定义任何内容,它将神奇地显示在管理设置中。

SO网友:Por

好啊我以前也这样过。确保正确加载jquery文件,然后仔细检查依赖插件的javascript文件。WordPress有一些加载js文件的方法。再次选中不加载默认wordpress jquery文件和自定义jquery版本文件。对于您的HTTP问题,请阅读HTML5样板。com他们使用更智能的HTTP方式。不要过多地修改核心文件:)

结束

相关推荐

单独的jQuery是否适用于个人评论?

到目前为止,我已经设计了此功能,以便在每个评论下方的前端显示评级星:add_filter( \'comment_text\', \'additional_fields\' ); function additional_fields ($below) { global $comment; if(!get_comment_meta( get_comment_ID(), \'rating\', true ) ) { $ratsec = \'<