【问题标题】:PHP cookie set within Drupal inaccessible in non-Drupal script在 Drupal 中设置的 PHP cookie 在非 Drupal 脚本中无法访问
【发布时间】:2016-02-28 18:48:09
【问题描述】:

我在 Pantheon 上托管的 Drupal 应用程序中设置了一个 cookie(假设 URL 是 domain.com/step/1),然后立即重定向到这样的外部 URL:

$expires = time()+(60*60*24);
setrawcookie('tourPath', '/step/1', $expires, '/');
header('Location: http://www.someexternalurl.com?redirect='.$callback_url);

外部 URL 以与此问题无关的方式处理请求,但随后会重定向到 $callback_url。假设它是domain.com/callback。无论如何,它在同一个域中,但它只是一个普通的 PHP 脚本(不在 Drupal 中)。

我在这里遇到的问题是,当重定向到回调脚本时,我可以在浏览器中看到设置了 tourPath cookie,但它不在 $_COOKIE 数组中。强>

我可以在 $_COOKIE 中看到各种 Drupal cookie,所以一般设置 cookie 没有问题。

我尝试改用setcookie(),但这没有帮助。

【问题讨论】:

  • 附带说明,由于我无法控制外部服务的限制,无法在回调 URL 中设置此 tourPath 变量:它们要求将所有重定向 URL 列入白名单,因此必须将每个 /step/1、/step/2、/step/3 等都列入白名单是一件非常痛苦的事情......

标签: php cookies drupal drupal-7 pantheon


【解决方案1】:

在处理 pantheon 并设置您自己的 cookie/会话变量时,您需要根据此处的文档在 cookie 名称前加上“SESS”:

https://pantheon.io/docs/articles/sites/varnish/caching-advancedtopics/

所以而不是:

setcookie('hi', 'howareyou?');

你需要使用:

setcookie('SESShi', 'howareyou?');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 2011-12-26
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多