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

时间:2014-10-22 作者:Sarah German

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

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

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

重命名插件目录重命名站点主题目录,在数据库中搜索以前URL的实例,并将其替换为新URL,将WordPress更新为最新版本(4.0)

  • 在WP config中定义的WP\\U HOME和WP\\U SITEURL。php在wp配置中设置ADMIN\\u COOKIE\\u路径、COOKIE\\u域、COOKIEPATH和SITECOOKIEPATH。php:

    define(\'ADMIN_COOKIE_PATH\', \'/\');
    define(\'COOKIE_DOMAIN\', \'\');
    define(\'COOKIEPATH\', \'\');
    define(\'SITECOOKIEPATH\', \'\');
    
  • 尝试了此黑客登录。php:https://wordpress.org/support/topic/cookies-are-blocked-or-not-supported-by-your-browser-1#post-5026171

  • 我可以在本地安装上登录该站点,也可以在开发服务器上登录该站点。你知道这是什么原因吗?

    8 个回复
    最合适的回答,由SO网友:Sarah German 整理而成

    那是清漆。

    我们的web主机以特定于Drupal的方式设置了Varnish,它正在过滤WordPress用于处理登录的Cookie。

    SO网友:wpdevramki

    在wp配置中添加以下行。php之前/*仅此而已,停止编辑*/

     define(\'COOKIE_DOMAIN\', $_SERVER[\'HTTP_HOST\'] );
    
    /* That\'s all, stop editing! Happy blogging. */
    

    SO网友:Terry Kernan

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

    SO网友:JesusIniesta

    此问题也可能由与确切url不匹配的site\\u url引起。

    在我的例子中,我的site\\u 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\']);
    

    SO网友:Raj

    我被google搜索过&;尝试了各种方法来解决这个cookie问题。最后,我找到了两种解决方案,可以帮助您。

    Solution 1:

    您的站点/wp登录。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更新后被覆盖,所以请尝试第二种解决方案。

    Solution 2:

    你的网站/wp内容/主题/你的主题文件夹/功能。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,它位于当前活动主题的子主题文件夹下。希望这对你有帮助。

    SO网友:Mayank Dudakiya

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

    编码错误代码中不必要的空格缓存(&L);安全插件检查更多信息:https://www.scratchcode.io/cookies-are-blocked-or-not-supported-by-your-browser/

    SO网友:Sebas Rossi

    这主要发生在您第一次登录后端时。

    如果您确定输入的用户和密码是有效的,您可以尝试简单地重新加载页面,您将正常登录。

    就这样。之后,浏览器将保存所需的cookie

    SO网友:Tech Dog

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

    “注意:第102行的/wp-config.php中已经定义了常数COOKIE\\u域”

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

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

    结束

    相关推荐

    强制[WordPress_Social_LOGIN]快捷代码显示其嵌入位置

    这个WordPress Social Login 插件包含[wordpress_social_login] 可以在帖子和页面中使用的短代码。问题是,无论我把它放在帖子正文的什么地方,它总是作为页面上的第一件事呈现。我使用的是突出的主题,我一直在查看一个名为wsl_render_login_form() 它似乎呈现了它,但不清楚它是如何首先将其放置在页面上的。如何在实际放置的位置进行短代码渲染?看起来这应该是默认值,但令人恼火的是事实并非如此。