Cookie的值为“=”

时间:2011-10-05 09:39:00

标签: javascript

我必须在提出请求时检查cookie是否存在。问题是Cookie值在其中具有“=”,例如

...;用户名=名字=相约; ....

此处cookie名称为“username”,cookie值为“firstName = Meet”。问题是当我尝试从document.cookies获取cookie时。我使用split函数为“;”爆炸结果后得到所有的cookie。

为了获取值,我将每个值爆炸/拆分为“=”,那么此cookie值将一直到firstName。

任何想法都可以作为firstName = Meet来获得全部价值。

感谢, 满足

3 个答案:

答案 0 :(得分:2)

// when you get a cookie string:
unescape(cookieData);
// when you set a cookie string:
escape(yourString);

答案 1 :(得分:0)

如果在服务器端设置了cookie,则需要对该值进行urlencode,就像它是一个查询字符串一样。如果您正在使用带有setcookie的PHP,那么这应该是自动完成的。实际上,任何体面的库都应该自动为你编码cookie值。

将cookie值设置为username = firstName = Meet的唯一方法是,如果您手动发送Set-Cookie标头。

如果您首先提供有关如何设置cookie的更多信息,那么这将有助于提供更准确的答案。

答案 2 :(得分:0)

从document.cookies中以已知格式查找单个cookie有一些替代方法。这是使用正则表达式的简化案例。

var expr = /(?:^|; )username=([^;]+)/i; //match "username=some_string_that_string_may_have_more=_in_it". Capture the part after the leading =. Does not capture the trailing ;
var cookie_match = document.cookie.match(expr);
var cookie_val;

if (cookie_match) {
    cookie_val = cookie_match[1];
}

//result should be cookie_val = "firstName=Meet"

你当然可以通过拆分document.cookie获得所有的cookie,如上所述,如果你正在捕获大量的cookie或编写一个cookie访问包装,那么这是一个好主意。请记住,使用子cookie时,cookie将如下所示:

cookiename=cookiekey=cookievalue&key2=val2;  

您希望使用正则表达式或slice / indexOf来确保您只在第一个等号上拆分每个cookie。然后,如果您想要详细程度,可以先在&然后在=上拆分来获取单个名称/值对。