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.