清漆是否将布尔值转换为字符串?

Is varnish casting boolean to string?

我们在实时环境中安装了 varnish 4.0.3。 我们在 varnish vcl_recv:

中从我们的 vcl 文件中提取这段代码
set req.http.x-is-static-resource = true; #boolean assignment
# some code
if (req.http.x-is-static-resource == true) { # boolean == boolean ?
    # some code
}

但是遇到这个错误:

Message from VCC-compiler:
Comparison of different types: STRING '==' BOOL
('/etc/varnish/utils.vcl' Line 429 Pos 37)
  if (req.http.x-is-static-resource == true) {
------------------------------------##--------

我们在几个代码中发现了这种赋值:

我认为 varnish 不应该出现这个错误。我们分配一个布尔类型,我们期望一个布尔类型,对吧?

我们缺少什么?

谢谢

您找到的作业不是 req.http - req.http。[name] 是访问请求 header [name] 的一种方式。 Headers 是字符串,不是布尔值。不过,您仍然可以通过一些小的改动来完成这项工作:

set req.http.x-is-static-resource = "true";
[...]

if (req.http.x-is-static-resource) { [...]