Browse Source

Fix Vary parsing in cache control enforcement (#37426)

pull/1371/head
Joshua Rogers 2 months ago committed by Misty De Meo
parent
commit
d0bf26a03b
No known key found for this signature in database
GPG Key ID: 76CF846A2F674B2C
  1. 2
      app/controllers/concerns/cache_concern.rb

2
app/controllers/concerns/cache_concern.rb

@ -19,7 +19,7 @@ module CacheConcern
# from being used as cache keys, while allowing to `Vary` on them (to not serve
# anonymous cached data to authenticated requests when authentication matters)
def enforce_cache_control!
vary = response.headers['Vary']&.split&.map { |x| x.strip.downcase }
vary = response.headers['Vary'].to_s.split(',').map { |x| x.strip.downcase }.reject(&:empty?)
return unless vary.present? && %w(cookie authorization signature).any? { |header| vary.include?(header) && request.headers[header].present? }
response.cache_control.replace(private: true, no_store: true)

Loading…
Cancel
Save