Non ha senso utilizzare il referer, è fornito dal client e quindi manipolabile.

Tempo fa utilizzavo un approccio per lo stesso scopo con le sessioni: fornivo il file javascript prova.js.php via php per mezzo dell'opportuno header(), controllando che una variabile $_SESSION['load'] fosse stata settata precedentemente (nella pagina html chiamante).

La pagina html (.php) settava la variabile $_SESSION['load'] = true, richiamava il file js di prima e poi desettava la variabile di sessione.

Ovviamente anche questo sistema non è il massimo, ma migliore del referer.