2012-08-06 73 views
8

我在尋找這個JavaScript如何在剃鬚刀中獲取頁面原點?

window.location.origin 

但服務器端的等效,同時建立MVC頁。

例如,如果你在這裏 http://website.com/123, 它將返回

http://website.com 

其重要的是我有 「的http://」 部分

+0

原來的那個已經被問......可能重複[如何獲得當前頁面的URL在MVC 3](http://stackoverflow.com/questions/5304782/how-to-get-current-page-url -in-mvc-3) – 2012-08-06 16:07:04

回答

14

我的

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

風扇保持您的HTTP/HTTPS ,端口(如果適用)和HostName/IP。

+0

+1:這是最好的答案。 – 2012-08-06 16:13:20

+0

+1:清潔易讀 – Manatherin 2012-08-06 16:15:26

+0

就是這樣,親切先生 – odle 2012-08-06 16:32:49

0

我想你找Request.Url或RawUrl 。

Request.Url的Uri.Scheme會給你HTTP/HTTPS的差異信息。

+0

Request.Url也會包含'/ 123'。 – 2012-08-06 16:07:31

+0

@JohnH,我已經更新了答案...... Manatherin的答案(+1)已包含所有內容。 – 2012-08-06 16:14:22

+0

這些都不會給出要求。考慮到以下URL'http:// localhost:63105/home/index',Request.Url將返回'http:// localhost:63105/home/index',Request.RawUrl將返回'/ home/index' 。我們的答案都不如Erik的,所以我會刪除我的。 – 2012-08-06 16:20:16

1

你可以嘗試

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

或者

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

管理局將包括端口號

+0

我想你的權威上會有一個額外的':'。 – 2012-08-06 16:12:13

+0

@ErikPhilips它似乎並沒有在我的測試 – Manatherin 2012-08-06 16:15:48

+0

噢,你說得對,忘了是該端口上的網址,我用它所以很少。 – 2012-08-06 16:18:15

-1

的window.location.origin在javascript返回協議,端口(如果有的話),結構域和當前URL的擴展。

如果你想從一個URL相同的信息時,接受的回答將提供給你。

如果你想要相同的行爲,即一段JavaScript正在調用你的服務器方法,並且你想知道它從哪裏調用,你可以檢查HttpRequest.URLReferrer。然而,這可能容易被欺騙,因此不可靠。

+0

使用'UrlReferrer'很危險!它可以[欺騙/設置爲任何內容](https://en.wikipedia.org/wiki/Referer_spoofing)。如果你沒有正確轉義,就會打開一大堆蠕蟲(例如XSS)。另外,當我點擊Google.com的網頁時,您的方法會返回google.com,而不是website.com。永遠不要相信用戶輸入;推薦人就是這樣。 – RobIII 2016-09-12 14:18:13

+0

@RobIII你是對的。更新我的回答以反映我的原始意見。 – 2016-09-13 18:23:55