如何强制admin-ajax.php文件通过HTTPS加载?

时间:2018-05-15 作者:user658182

我最近有一个网站100%支持HTTPS。前端和后端的所有资产都通过HTTPS成功调用,除了admin ajax。php。

这会导致任何依赖于文件的功能失败,包括但不限于CF7、Elementor和其他使用AJAX提交的表单等。

我得到的错误,你可以在截图中看到是“混合内容:页面位于”https://toursoft.co/contact-us/\' 已通过HTTPS加载,但请求了不安全的XMLHttpRequest终结点\'http://toursoft.co/wp-admin/admin-ajax.php\'. 此请求已被阻止;内容必须通过HTTPS提供。“”

以下是我迄今为止为解决这个问题所做的努力。

1) 尽一切努力https://codex.wordpress.org/Administration_Over_SSL 包括define(\'FORCE\\u SSL\\u ADMIN\',true)。尽管它们正在加载wp-admin/admin-ajax。php文件,这是从前端发生的。

2) 在我的apache配置中添加了以下内容:

SetEnvIf X-Forwarded-Proto https HTTPS
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
3)使用wp cli执行完整的搜索和替换

sudo -u www-data wp search-replace \'http://toursoft.co\' \'https://toursoft.co\' --network
这替换了151项,甚至在GUID列中也是如此,Wordpress强烈建议不要这样做。但它没有起作用。数据库中保留了0个http://

4) 已验证site\\u url和home选项是否正确指向https://

调查导致错误的javascript代码表明,代码似乎正确地调用了“ajaxUrl”变量。这个变量应该保存文件的https://version,对吗?

jQuery.ajax({
                    url: t.getSettings("ajaxUrl"), 
                    type: "POST",
                    dataType: "json",
                    data: t.getFormData(),
                    processData: !1,
                    contentType: !1,
                    success: t.onSuccess,
                    error: t.onError
                })
TheajaxUrl 变量仅返回脚本的http版本。否则,我如何调查并最终修复它,以便通过https加载?

mixed content error

1 个回复
SO网友:Dalibor Tesanovic

如果您使用的是域映射插件,那么这样做将很快实现您的要求。

转到:YOURDOMAIN/wp admin/tools。php?page=域映射

在:排除的页面下,选中:对所有页面强制SSL。

保存就完成了。

管理ajax导致您的不安全混合内容错误。在此之后,应该停止通过http而不是https加载php。

结束

相关推荐

redirect if shortcode exists

WordPress初学者。我试图检查用户请求的页面中是否存在短代码,如果存在,则在用户未登录时重定向。function redirect_to_home() { if (has_shortcode(get_the_content(), \'shortcode\')) { if(!is_admin() && !is_user_logged_in()) { //redirect exit(); }