2012-08-06 10 views
8

Sto cercando l'equivalente di questo javascriptCome ottenere l'origine della pagina sul rasoio?

window.location.origin 

ma lato server, mentre la costruzione di pagine MVC.

Per esempio, se siete qui http://website.com/123, sarebbe tornare

http://website.com 

E 'importante che ho il "http: //" parte

+0

Si è scoperto che era già stato chiesto ... possibile duplicato di [Come ottenere l'URL della pagina corrente in MVC 3] (http://stackoverflow.com/questions/5304782/how-to-get-current-page-url -in-mvc-3) –

risposta

14

io sono un fan di

string url = Request.Url.AbsoluteUri.Replace(Request.Url.PathAndQuery, 
              string.Empty); 

Mantiene il vostro HTTP/HTTPS , Porta (se applicabile) e HostName/IP.

+0

+1: questa è la migliore risposta. –

+0

+1: pulito e leggibile – Manatherin

+0

Che funziona, gentile signore – odle

0

Credo che si cerca di Request.Url o RawUrl .

Uri.Scheme di Request.Url fornirà informazioni sulla differenza http/https.

+0

Request.Url includerà anche '/ 123'. –

+0

@JohnH, ho aggiornato la risposta ... Anche la risposta di Manatherin (+1) include già tutto. –

+0

Nessuno di questi darà ciò che è stato richiesto. Prendendo in considerazione il seguente URL: http: // localhost: 63105/home/index', Request.Url restituirà 'http: // localhost: 63105/home/index' e Request.RawUrl restituirà'/home/index' . Entrambe le nostre risposte sono inferiori a quelle di Erik, quindi rimuoverò le mie. –

1

si potrebbe provare

@String.Format("{0}://{1}", Request.Url.Scheme, Request.Url.Authority) 

O

@String.Format("{0}://{1}", Request.Url.Scheme, Request.Url.Host) 

Autorità includerà il numero di porta

+0

Penso che avrai un ':' sulla tua autorità. –

+0

@ErikPhilips Non sembra nel mio test – Manatherin

+0

oh sì hai ragione, ho dimenticato che la porta è in url, la uso così raramente. –

-1

Il file window.location.origin in javascript restituisce il protocollo, la porta (se presente), il dominio e l'estensione dell'URL corrente.

Se si desidera ottenere le stesse informazioni da un URL, le risposte accettate lo forniranno.

Se si desidera lo stesso comportamento, ad esempio un pezzo di javascript chiama il metodo del server e si desidera sapere da dove sta chiamando, è possibile ispezionare HttpRequest.URLReferrer. Tuttavia questo può essere facilmente falsificato e quindi non affidabile.

+0

L'uso di 'UrlReferrer' è pericoloso! Può essere [falsificato/impostato su qualsiasi cosa] (https://en.wikipedia.org/wiki/Referer_spoofing). Ciò apre una grande quantità di worm se non si sta salvando correttamente ecc. (XSS ad esempio). Inoltre, quando clicco sulla pagina proveniente da Google.com, il tuo metodo restituirà google.com, non website.com. Non fidarti mai dell'input dell'utente; il referente è esattamente questo. – RobIII

+0

@RobIII Hai ragione.Aggiornato la mia risposta per riflettere la mia opinione originale. –

Problemi correlati