如何跨子例程传递变量?
我有以下default.vcl:
vcl 4.0;
sub vcl_recv {
set req.http.x-tracking-first-request = "true";
}
sub vcl_deliver {
if (resp.http.x-tracking-first-request) {
# do something
}
}
目前我必须在后端处理参数,例如response.add_header("x-tracking-first-request", response.get_header("x-tracking-first-request"))
。这意味着每个客户端必须实现这个"反射"逻辑。
为什么呢? Uppon第一次请求我想生成一个uuid以便以后识别不同的用户。因此,我必须以某种方式在所有请求/响应周期中保存uuid。
答案 0 :(得分:1)
您只需在req
期间使用vcl_deliver
对象:
vcl 4.0;
sub vcl_recv {
set req.http.x-tracking-first-request = "true";
}
sub vcl_deliver {
if (req.http.x-tracking-first-request) {
# do something
}
}