View Issue Details

IDProjectCategoryView StatusLast Update
0008493Talerexchangepublic2024-02-23 13:00
ReporterFlorian Dold Assigned ToChristian Grothoff Resolution deadline
ImplementerReviewer 
Release signed byDeployed by 
VerifierCommunicator 
Data protection authority notification requiredNo  
CSIRT notification requiredNo  
Estimated effort (hours)Actual effort (hours)0 
Fast-trackNo
Work packagenone
PrioritynormalSeverityminorReproducibilityhave not tried
Status closedResolutionno change required 
Target Version0.9.4Fixed in Version0.9.4 
Summary0008493: exchange sends two Vary headers for /terms response, causing browsers to return cached response even when the language changes
Description$ curl https://exchange.test.taler.net/terms

< vary: Accept-Encoding
< etag: exchange-tos-v0
[...]
< vary: Accept-Language,Accept,Accept-Encoding
TagsNo tags attached.

Required notifications

Address or linkRemarkAdded byNotifiedActions

Activities

Christian Grothoff

2024-02-22 20:53

manager   ~0021465

I read https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Vary that the server is exactly doing what the spec says: specify which HTTP request headers may have influenced the response generation, so that a browser or cache should NOT (necessarily) return the cached version if the HTTP request headers changed. Now, if a browser doesn't respect this, that's another story, but where do you think I'm misreading the spec?

Christian Grothoff

2024-02-22 20:53

manager   ~0021466

Oh, sorry. The issue is that we set TWO vary headers, right?

Christian Grothoff

2024-02-22 20:56

manager   ~0021467

Eh, I just checked, and Firefox only shows one VARY header. And the code only has ONE place where ONE vary header is set.

Christian Grothoff

2024-02-22 21:00

manager   ~0021468

Interesting, curl and Firefox disagree! More interesting: curl only shows *1* vary header when run against the Exchange without nginx proxy!

Christian Grothoff

2024-02-22 21:01

manager   ~0021469

nginx.conf: gzip_vary on;

instructs nginx to add such a 'Vary' header. I think this is the real culprit, as Nginx just adds another vary header, not caring what already exists.

So no, there won't be an Exchange test for this, it wouldn't catch anything anyway!

Christian Grothoff

2024-02-23 13:00

manager   ~0021477

This is actually OK, the browser combines multiple headers.

Issue History

Date ModifiedUsernameFieldChange
2024-02-22 19:55Florian DoldNew Issue
2024-02-22 19:55Florian DoldStatusnew => assigned
2024-02-22 19:55Florian DoldAssigned To => Christian Grothoff
2024-02-22 20:53Christian GrothoffNote Added: 0021465
2024-02-22 20:53Christian GrothoffNote Added: 0021466
2024-02-22 20:56Christian GrothoffNote Added: 0021467
2024-02-22 21:00Christian GrothoffNote Added: 0021468
2024-02-22 21:01Christian GrothoffNote Added: 0021469
2024-02-22 21:04Christian GrothoffAssigned ToChristian Grothoff => javier.sepulveda
2024-02-23 13:00Christian GrothoffAssigned Tojavier.sepulveda => Christian Grothoff
2024-02-23 13:00Christian GrothoffStatusassigned => closed
2024-02-23 13:00Christian GrothoffResolutionopen => no change required
2024-02-23 13:00Christian GrothoffFixed in Version => 0.9.4
2024-02-23 13:00Christian GrothoffNote Added: 0021477