content maniuplation
1 TopicFixup Cache Control Headers
Problem this snippet solves: Coalesce all instances of a header in the response into a single comma-delimited header. This is primarily used to work around a bug in RAMCache, ID360047, where it only examines the last Cache-Control response header. Code : when RULE_INIT { # A list of headers; for each header, take all instances of that header and # combine them into a single (comma-delimited) header. # # e.g. # Cache-Control: private # Cache-Control: max-age=0 # is translated into: # Cache-Control: private, max-age=0 # # Headers listed here MUST be defined as a list in the HTTP RFC. # See the definition of Cache-Control and WWW-Authenticate for examples # (http://tools.ietf.org/html/rfc2616#section-14.9) #set static::headers { "Cache-Control" "WWW-Authenticate" } set static::headers { "Cache-Control" } # Enable/disable diagnostic logging. Set to 1 to enable, 0 to disable set static::debug 0 } when HTTP_RESPONSE { foreach header $static::headers { if {[HTTP::header exists $header]} { # Grab the values as a list, remove the existing headers, and # replace with the values, joined as a comma-delimited string set from_values [HTTP::header values $header] set to_values {} foreach value $from_values { set value [string trim $value] if { $value ne ""} { lappend to_values $value } } set to_values [join $to_values ", "] if { $static::debug } { log local0. "Coalescing $header from '$from_values' to '$to_values'" } HTTP::header remove $header HTTP::header insert "lws" $header $to_values } } }381Views0likes0Comments