I'm seeing this behavior on iOS 7 Safari, probably older versions as well though I've not confirmed yet.
We have a web filter. When a web page is blocked, a 302 redirect is issued redirecting to a block page which tells the user that the site is blocked, why it is blocked, and lets them log in to bypass the block. Upon logging in, the user should not longer be redirected to a block page. Revisiting the blocked site, now unblocked, results in the 302 redirect again. The only solution is to clear safari cache and try again, but this is too complicated for the majority of users.
I figured it out. Set the "cache-control" header to "no-store" and Safari will observe the request. I've been struggling with this bug since February and I finally had a breakthrough once I could isolate it to Safari caching the 302 redirect.
That led me to this open WebKit bug and the final comment:
CachedRawResource now keeps the redirect chain, and has some trivial logic for checking correctness, but it's nowhere near complete (only checks cacheControlContainsNoStore()). And of course other resource types don't have anything.
It fixed everything for me on desktop and mobile Safari. Hope it helps!