【问题标题】:in Node.js, how to get set-cookie value in a <meta http-equiv> tag在 Node.js 中,如何在 <meta http-equiv> 标记中获取 set-cookie 值
【发布时间】:2014-02-13 16:13:40
【问题描述】:

在 Node.js 中,我需要捕获在响应中设置 cookie 的实例,以便我可以对其进行操作。我正在解决设置 cookie 的这两种方式:

  1. 通过set-cookie HTTP 标头
  2. 通过&lt;meta http-equiv="Set-Cookie"&gt;

我可以让第一个使用:

if (getProperty(responseHeaders, 'set-cookie') != null) {
    //do something
}

我将如何解决第二种方法?我需要抓取 HTML 响应,还是有更好的方法?如果是前者,怎么做?

【问题讨论】:

  • 我不确定,如果有更好的方法,但我会使用 DOMParser 或简单的正则表达式..
  • 你需要抓取 HTML 响应……但是有没有浏览器甚至支持通过元元素设置 cookie?

标签: javascript node.js cookies http-headers setcookie


【解决方案1】:

我通过在响应正文上使用正则表达式解决了这个问题:

var regexHandler = function(match, cookieValue){
    return ""; //remove the meta tag
};

responseBody = responseBody.replace(/<meta.*http-equiv=[\"']?set-cookie[\"']?.*content=[\"'](.*)[\"'].*>/gi, regexHandler);
responseBody = responseBody.replace(/<meta.*content=[\"'](.*)[\"'].*http-equiv=[\"']?set-cookie[\"']? .*>/gi, regexHandler);

【讨论】:

    【解决方案2】:

    Cookie 作为 HTTP 标头的一部分进行传输。它是 HTTP 的东西,而不是 HTML 的东西。

    当 cookie 从客户端发送到您的服务器时,标头字段称为“Cookie”。当您响应传入请求时,如果您想在客户端浏览器中设置或保留 cookie,则必须始终在响应中包含“Set-Cookie”标签。

    如果您不设置 cookie,它将在客户端浏览器中删除。

    您可以在req.header['set-cookie'] 中查找 cookie,并且您可以使用响应的相同方式设置 cookie。

    有很多优秀的库可以为您完成所有这些工作。看看https://github.com/jed/cookies,它适用于 Express、Connect 和普通 NodeJS :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-09
      • 2017-02-03
      • 2014-02-26
      • 2015-12-29
      • 2013-03-08
      • 2012-06-28
      • 2013-04-10
      相关资源
      最近更新 更多