【问题标题】:Is varnish casting boolean to string?清漆将布尔值转换为字符串吗?
【发布时间】:2015-07-08 17:01:37
【问题描述】:

我们在实际环境中使用了 varnish 4.0.3。 我们从我们的 vcl 文件中提取此代码 varnish vcl_recv:

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 varnish-vcl


    【解决方案1】:

    你发现的分配不是 req.http - req.http.[name] 是访问请求头 [name] 的一种方式。标头是字符串,而不是布尔值。不过,您仍然可以通过一些小改动来完成这项工作:

    set req.http.x-is-static-resource = "true";
    [...]
    
    if (req.http.x-is-static-resource) { [...]
    

    【讨论】:

    • 正如你所说,标题不是变量,我们将其用作变量:S。糟糕的概念。我们现在按照您所说的设置标题,并检查 req.http.x-is-static-resource == "true" 之类的值。谢谢@pvg
    猜你喜欢
    • 2018-09-07
    • 1970-01-01
    • 2012-03-10
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多