restangular
restangular copied to clipboard
make etag a strong etag when used in if-None-Match
Should restangular make the etag it receives a strong etag when it sends it as if-None-Match
http header
(i.e strip the W/
from received etag when it uses it as if-None-Match
)
MDN says that <etag_value>
may be prefixed by
W/
to indicate that the weak comparison algorithm should be used (This is useless withIf-None-Match
as it only uses that algorithm).
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match
for more context: https://stackoverflow.com/questions/47995118/nginx-doesnt-match-weak-etags
I'm trying to handle weak etags problem with nginx
If I send a weak etag (with W/"<etag>"
), nginx will not recognize the etag, and will send 200 OK
http response
But If I send it as strong etag (without W/"<etag>"
) then nginx will respond correctly with 304 Not Modified
response
That would certainly seem like an nginx bug.
https://tools.ietf.org/html/rfc7232#section-3.2 "A recipient MUST use the weak comparison function when comparing entity-tags for If-None-Match"
https://tools.ietf.org/html/rfc7232#section-2.3.2 "Weak comparison: two entity-tags are equivalent if their opaque-tags match character-by-character, regardless of either or both being tagged as "weak"."
Also, it looks like this may have been fixed in nginx 1.7.3: http://hg.nginx.org/nginx/rev/af229f8cf987 "Entity tags: weak comparison for If-None-Match." https://github.com/nginx/nginx/compare/release-1.7.2...release-1.7.3