GPS Receiver in Frequency Domain
I do not see any issues with your approach for the frequency domain computation, given that the following is a circular convolution in the time domain of the two signals a and b:

$$corr(a,b) = ifft(fft(a)fft(b)^*)$$

But to receive each bit you need to evaluate the maximum in each interval to determine if it is positive or negative. 

Further in actual application, the received signal would be sampled higher than one sample per bit, with the unknown Doppler offset frequency removed (carrier recovery) and aligned such that your start of the FFT is at the start of the symbol. There are also 20 1023 length symbols per actual data bit in GPS. 

In this case the FFT would be rate matched to the received signal. You could also process longer blocks as I show in the example plot below, by simply zero padding the rate-matched prn sequence out to the length of the data block prior to taking the FFT.  In the plot below this was done for 1e6 samples of actual received signals sampled at 20 MSps.