无法登录:“错误:浏览器已阻止或不支持Cookie。您必须启用Cookie才能使用WordPress。”


14

服务器移动后,我无法登录到我的站点。我收到“错误:浏览器阻止或不支持Cookies。必须启用Cookies才能使用WordPress。” 尝试提交登录表单时出错。

我很肯定我的浏览器支持cookie,并且不会阻止它们。

我已经对此进行了彻底的研究,并尝试了所有发现的建议:

  • 重命名了plugins目录
  • 重命名网站主题目录
  • 在数据库中搜索以前的URL的实例,并用新的URL替换它们
  • 将WordPress更新到最新版本(4.0)
  • 在wp-config.php中定义了WP_HOME和WP_SITEURL
  • 在wp-config.php中设置ADMIN_COOKIE_PATH,COOKIE_DOMAIN,COOKIEPATH和SITECOOKIEPATH:

    define('ADMIN_COOKIE_PATH', '/');
    define('COOKIE_DOMAIN', '');
    define('COOKIEPATH', '');
    define('SITECOOKIEPATH', '');
  • 尝试了这个黑客来wp-login.php:https : //wordpress.org/support/topic/cookies-are-blocked-or-not-supported-by-your-browser-1#post-5026171

我可以在本地安装中登录该站点,也可以在我们的开发服务器上登录该站点。任何想法可能是什么原因造成的?


1
查看登录页面的HTML源。初始DOCTYPE行之前是否有任何内容?哪怕是空行?如果是这样,那么在制作标头之前,您需要执行一些代码创建输出,在这种情况下,这将阻止它设置cookie。
奥托

2
这是由于Wordpress对管理员登录的加密通道强制执行了$ secure_cookie控件。重新配置您的网络服务器以实施SSL / TLS。KR。

如果您使用的是WordPress MU,则将域添加到“设置”中的“域”列表中可能会解决此问题。
Mahdi Taghizadeh

2
这就是对我有用的方法:我将http更改为https(添加了“ s”)并确定。不再有Cookie问题。
囚犯

@MahdiTaghizadeh-您能详细解释一下您的意思吗?
Greeso

Answers:


26

在/ *之前,将以下行添加到您的wp-config.php中:就这样,停止编辑!... * /

 define('COOKIE_DOMAIN', $_SERVER['HTTP_HOST'] );

/* That's all, stop editing! Happy blogging. */

1
该解决方案在多站点安装中也对我有用。我能够登录到主站点,但无法登录到辅助站点。
Be.St.

@ Be.St。,尝试define('COOKIE_DOMAIN', '');
史蒂夫(Steve)

1
这对我而言并不立即起作用,但确实进行了强制刷新(Chrome中的Ctrl + F5)
Dave

4

是清漆。

我们的虚拟主机以Drupal特定的方式设置了Varnish,并且正在过滤掉WordPress用于处理登录的cookie。


1
就我而言,是AWS CloudFront阻止了cookie。
Mantas

我认为这与非安全sitehttp://但对我来说一切都使用HTTPS时的工作原理://
CrandellWS

1

我被谷歌搜索并尝试了各种方法来摆脱这个cookie问题。最后,我找到了两个解决方案,可以为您提供帮助。

解决方案1:

yoursite / wp-login.php

注释以下770-773行

if ( isset($_POST['testcookie']) && empty($_COOKIE[TEST_COOKIE]) )
    $user = new WP_Error('test_cookie', __("<strong>ERROR</strong>: Cookies are blocked or not supported by your browser. You must <a href='http://www.google.com/cookies.html'>enable cookies</a> to use WordPress."));
else
    $user = wp_signon('', $secure_cookie);

它可能适用于某些网站,某些网站可能显示空白页。此外,不建议这样做,因为在wordpress更新后此文件可能会被覆盖,因此请尝试第二种解决方案。

解决方案2:

yoursite / wp-content / themes / yourthemeFolder / functions.php

放置以下代码。

 setcookie(TEST_COOKIE, 'WP Cookie check', 0, COOKIEPATH, COOKIE_DOMAIN);
if ( SITECOOKIEPATH != COOKIEPATH )
    setcookie(TEST_COOKIE, 'WP Cookie check', 0, SITECOOKIEPATH, COOKIE_DOMAIN);

更新主题可能还会使这些更改丢失,因此请将此代码放在另一个function.php中,该文件位于当前活动主题的child-theme文件夹下。希望对你有帮助。


2
这些确实是解决方案。更像是工作环境,不是永久使用此方法的理想选择...
Jake

-1代表“解决方案” 1,因为编辑核心永远都不是正确的操作。2可以工作,但不能识别问题。
杰里米(Jeremy)

1

最近我也遇到了这个问题,事实证明,尽管域名指向该网站,但wordpress多站点在数据库中没有将域名映射到正确博客的记录,因此当wordpress尝试设置时cookie,它是为子域而不是映射域设置cookie。


这对我有用。我正在使用wordpress.org/plugins/wordpress-mu-domain-mapping进行域映射,并且一旦添加了映射记录,我就停止收到“错误:浏览器阻止或不支持Cookie”错误。
lee_mcmullen

-1

我实现了wpdevramki提供的解决方案,并注意到可能出现以下问题:

“注意:在第102行的/wp-config.php中已经定义了常量COOKIE_DOMAIN”

要解决此问题,请在wp-includes / default-contants.php中注释掉以下代码

if ( !defined('COOKIE_DOMAIN') )
    define('COOKIE_DOMAIN', false);

3
请勿修改核心代码!
杰里米(Jeremy)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.