Browsers do send additional headers, but behavior different. This info in link a bit outdated: stackoverflow question
Looks like Cache-control:no-cache is the best solution, to check for Ctrl+F5, but better to check not the only one header.
Just checked on Firefox Ubuntu, F5 gives nothing, but Ctrl+F5 request contain this
No. The browser will send the same information on a refresh as if the user had just come to that page, with the same referrer information. Hence the problem of double-POSTing if someone refreshes the destination page for a form.
What you could do is have a refresh button on the page (as Google Ads used to have before they removed it), which you could use to ...