Openresty 操作Cookie
Posted sheng-247
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Openresty 操作Cookie相关的知识,希望对你有一定的参考价值。
Openresty 操作cookie共有两种方法:
1、直接操作
1.1 获取Cookie
获取所有cookie: ngx.var.http_cookie, 这里获取的是一个字符串,如果不存在则返回nil 。
获取单个cookie: ngx.var.cookie_username, 获取单个cookie,_后面的cookie的name,如果不存在则返回nil 。
1.2 设置Cookie
ngx.header[‘Set-Cookie‘] = {‘a=32; path=/‘, ‘b=4; path=/‘}-- 批量设置cookie ngx.header[‘Set-Cookie‘] = ‘a=32; path=/‘ -- 设置单个cookie,通过多次调用来设置多个值 ngx.header[‘Set-Cookie‘] = ‘b=4; path=/‘ ngx.header[‘Set-Cookie‘] = ‘c=5; path=/; Expires=‘ .. ngx.cookie_time(ngx.time() + 60 * 30) -- 设置Cookie过期时间为30分钟
熟悉http协议的应该都知道,设置cookie是通过在响应头中的Set-Cookie字段来操作的,既然知道原理那上面的代码应该就很好理解,其实只要知道怎么用lua来设置响应头即可
注意:设置cookie时要一定要加path和Expires(过期时间),不然无法生效,因为默认过期时间为立即。
2.1、 获取cookie
local cookie = resty_cookie:new()
local all_cookie = cookie:get_all() -- 这里获取到所有的cookie,是一个table,如果不存在则返回nil
print(cjson.encode(all_cookie))
print(cookie:get(‘c‘))-- 获取单个cookie的值,如果不存在则返回nil
2.2、 设置cookie
cookie:set({ key = "c", value = "123456", path = "/", domain = "localhost", expires = ngx.cookie_time(ngx.time() + 60 * 13) })
以上是关于Openresty 操作Cookie的主要内容,如果未能解决你的问题,请参考以下文章
负载均衡基于Cookie OpenRest+tomcat+php+memcache+Jsp
C#-WebForm-★内置对象简介★Request-获取请求对象Response相应请求对象Session全局变量(私有)Cookie全局变量(私有)Application全局公共变量Vi(代码片段