2015-02-27 11 views
6

Sto usando il sottodominio npm e per mantenere pulito il routing vorrei fare qualcosa di simile.Express rileva se la richiesta proviene da un sottodominio?

router.get('/login_success',function(req,res) { 

    if(req.subdomain) { 
    res.redirect('/'); 
    } else { 
    res.sendStatus(200); 
    } 

}); 

In precedenza, se l'utente accede all'applicazione tramite sottodominio, ho reindirizzare alla radice sottodominio che rende un profilo.

Se l'utente esegue il login tramite la route non secondaria del dominio, utilizza ajax per eseguire il rendering di una vista, pertanto è necessario inviare uno stato 200 che dichiari che l'utente è valido.

Ho pensato che questo è molto più pulito di avere due percorsi di callback separati per ciascuno.

Quindi la mia domanda è un modo per rilevare se il req proviene da un sottodominio o da un dominio normale.

So che c'è req.headers.origin ma mi chiedo se c'è un modo più relativo di farlo, quindi quando si va avanti e indietro tra locale e produzione non devo cambiarlo.

risposta

11

Utilizzare req.subdomains, questo vi darà un elenco di sottodomini utilizzati nell'URL. Here's da dove ho preso l'informazione.

+0

Wow Ero vicino, ho provato 'req.subdomain' solo per testarlo e non ho ottenuto nulla. Ho anche ispezionato l'oggetto 'req' e non ho trovato nulla. Ma ha funzionato, uomo fantastico! –

+1

Nessun problema, altri problemi si riferiscono sempre ai documenti, http://expressjs.com/4x/api.html – MJPinfield