Networking Server Rewind.

Currently I send a shootrequest from the client to the server and then the server sends a projectile.
The problems with this are that the shooting is inconsistent and it’s inresponsive.
So to fix this I should have the client fire a projectile locally and tell the server I shot. With the method above I don’t have to check collisions. since client and server are in sync with their projectiles. but if I fire locally it won’t
How do I verify if a player’s shot hit someone on their screen?
I would need to rewind the player’s positions, but I have no idea how to do that.