在Node.js中,如何在<meta http-equiv =“”/>标记中获取set-cookie值

时间:2014-01-23 08:09:45

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

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

  1. 通过set-cookie HTTP标头
  2. 通过<meta http-equiv="Set-Cookie">
  3. 我能够使用第一个工作:

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

    我如何处理第二种方法?我是否需要抓取HTML响应,还是有更好的方法?如果是前者,怎么样?

2 个答案:

答案 0 :(得分:0)

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

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);

答案 1 :(得分:-1)

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

当cookie从客户端进入您的服务器时,标头字段称为“Cookie”。如果您要在客户端浏览器中设置或保留cookie,则必须在响应中包含“Set-Cookie”标记。

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

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

有很多好的图书馆可以为你做所有这些。看一下适用于Express,Connect和普通NodeJS的https://github.com/jed/cookies:)