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

我确信我的浏览器支持cookie,并且它们没有被阻止。

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


重命名了插件目录
重命名了站点主题目录
在数据库中搜索了先前URL的实例,并将其替换为新URL
将WordPress更新到最新版本(4.0)
在wp-config.php中定义了WP_HOME和WP_SITEURL

在wp-config中设置了ADMIN_COOKIE_PATH,COOKIE_DOMAIN,COOKIEPATH和SITECOOKIEPATH .php:

define('ADMIN_COOKIE_PATH', '/');
define('COOKIE_DOMAIN', '');
define('COOKIEPATH', '');
define('SITECOOKIEPATH', '');


将此黑客尝试到wp-login.php:https://wordpress.org/support/topic/cookies-are-blocked-or-您的浏览器不支持#1 post-5026171

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

评论

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

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

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

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

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

#1 楼

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

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

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


评论


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

– Be.St.
18-2-23在12:49

@ Be.St。,尝试define('COOKIE_DOMAIN','');

–史蒂夫
18年4月18日在2:14

这对我而言并不立即起作用,但是经过了硬刷新(Chrome中的Ctrl + F5)

–戴夫
19年2月9日在22:39

同意@Dave,我手动清理了cookie然后工作了

–Neekey
20 Feb 19'2:57



如果有人在寻找可以确认这一点的官方文档,则可以在wordpress.org/support/article/…的底部看到相同的建议。

– DuckMaestro
20 Mar 20 '20在23:47

#2 楼

这是Varnish。

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

评论


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

–曼塔斯
16 Sep 8'6在6:37

我在不安全的站点http://上看到了这一点,但对我来说,使用https://时一切正常

–CrandellWS
19-09-27在17:15

#3 楼

我被谷歌搜索并尝试了各种方法来摆脱这个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);


主题的更新也可能会使这些更改丢失,因此请将此代码放在其他函数中.php,该文件位于当前活动主题中的子主题文件夹下。希望对你有帮助。

评论


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

–杰克
16-09-21在18:52

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

–杰里米
18年4月25日在15:24

#4 楼

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

评论


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

–lee_mcmullen
19年2月13日在16:24

#5 楼

这个问题也可能是由于site_url与确切的网址不匹配造成的。
在我的情况下,我的site_url和home的名称是//127.0.0.1,我可以灵活地使用http或https,所以我做了:
 // Identify the relevant protocol for the current request
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https" : "http";

// Set SITEURL and HOME using a dynamic protocol.
define('WP_SITEURL', $protocol . '://' . $_SERVER['HTTP_HOST']);
define('WP_HOME', $protocol . '://' . $_SERVER['HTTP_HOST']);
 


#6 楼

您的网站中可能存在以下问题。

编码错误
代码中不必要的空格
缓存和安全性插件

请在此处查看更多信息:https: //www.scratchcode.io/cookies-are-blocked-or-not-supported by-your-browser /

#7 楼

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

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

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

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


评论


请勿修改核心代码!

–杰里米
18-04-25在15:27

切勿修改核心代码。

– Drmzindec
20年7月15日在15:06