【问题标题】:How to detect if an httpOnly cookie has been set如何检测是否设置了 httpOnly cookie
【发布时间】:2016-10-27 13:36:19
【问题描述】:

服务器已在浏览器上设置了一个仅限 http 的 cookie uid。我需要找出这个 cookie 是否存在并在我的 javascript 中执行一些操作。我知道只有 http 的 cookie 不能被 javascript 读取。所以我正在考虑设置另一个非http cookie loggedinmaxAge 相同,只要后者是从服务器设置的。两者将一起设置并一起清除。这种方法会奏效吗?这有什么注意事项吗?

【问题讨论】:

  • 你可以从服务器请求它吗?
  • 如何处理登录?如果是通过 React 组件,最好让组件通过检查登录服务的成功或失败来处理这个问题。
  • @PeeHaa 从服务器请求始终是一种选择。看看能不能避免
  • @cmbuckley 我正在尝试查看是否必须触发登录服务。如果 cookie 存在,我将避免登录调用。

标签: html cookies reactjs react-router httponly


【解决方案1】:

看看答案here

我的方法是尝试覆盖 cookie,它在 Edge、Chrome 和 Firefox 中都有效(不知道其他浏览器)

这是我使用的代码:

private doesHttpOnlyCookieExist(cookieName: string) {
    var d = new Date();
    d.setTime(d.getTime() + (1000));
    var expires = "expires=" + d.toUTCString();

    document.cookie = cookieName + "=new_value;path=/;" + expires;
    return document.cookie.indexOf(cookieName + '=') == -1;
 }

这是解释:

您可以通过尝试使用javascript将其设置为一个值来间接检查它是否存在,如果无法设置,则必须存在HTTP Only Cookie(或用户阻止cookie)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多