/v2/:name+/tags/list uses req.url to construct the Link for the next page. This logic is also used in the /:name+/manifests/:reference endpoint.
Since req.url also contains the query parameters, this builds urls like /v2/:name+/tags/list?n=50&last=348f1ef4?n=50&last=87dcd12f for page three. Due to new parameters being appended, this leads a client to effectively request /v2/:name+/tags/list?n=50&last=348f1ef4 (the parameters from page two) indefinitely.
/v2/:name+/tags/list
usesreq.url
to construct theLink
for the next page. This logic is also used in the/:name+/manifests/:reference
endpoint.Since
req.url
also contains the query parameters, this builds urls like/v2/:name+/tags/list?n=50&last=348f1ef4?n=50&last=87dcd12f
for page three. Due to new parameters being appended, this leads a client to effectively request/v2/:name+/tags/list?n=50&last=348f1ef4
(the parameters from page two) indefinitely.