ASP.NET中獲取URL重寫前的原始地址詳解
通常的使用場景是當(dāng)我們有某個(gè)頁面需要用戶登錄才能訪問時(shí),我們會在代碼中判斷當(dāng)前訪問用戶是否登錄,如果未登錄,則重定向至登錄頁面,并將當(dāng)前網(wǎng)址通過Url參數(shù)傳遞給登錄頁面。如果使用了URL重寫,并通過Request.Url.AbsoluteUri獲取當(dāng)前網(wǎng)址,用戶登錄后打開的就是重寫后的地址,這雖然不影響正常使用,但從用戶體驗(yàn)及URL統(tǒng)一的角度,我們更希望是重寫前的地址。
之前,我們在開發(fā)中也被這個(gè)問題困擾,只能盡量通過js重定向至登錄頁面(通過location.href獲取當(dāng)前網(wǎng)址)或者在代碼中手動寫返回地址。
現(xiàn)在,我們找到了解決方法,可以從Request.Headers中找到重寫前的網(wǎng)址。
1)如果重寫組件用的是ISAPI_Rewrite,則訪問被重寫的網(wǎng)址時(shí),Headers中會增加一項(xiàng)數(shù)據(jù):Key為X-Rewrite-URL,值為重寫前的網(wǎng)址。
2)如果重寫組件用的是IIS自帶的URL Rewrite模塊,則Headers中增加的信息的Key為X-Original-URL。
這樣我們就可以輕松獲取重寫前的網(wǎng)址,示例代碼如下:
if (Request.Headers["X-Rewrite-URL"] != null)
{
Response.Write("http://" + Request.Url.Host + Request.Headers["X-Rewrite-URL"]);
}
else if (Request.Headers["X-Original-URL"] != null)
{
Response.Write("http://" + Request.Url.Host + Request.Headers["X-Original-URL"]);
}
相關(guān)文章
.Net使用分表分庫框架ShardingCore實(shí)現(xiàn)多字段分片
本文詳細(xì)講解了.Net使用分表分庫框架ShardingCore實(shí)現(xiàn)多字段分片的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12asp.net+Ligerui實(shí)現(xiàn)grid導(dǎo)出Excel和Word的方法
這篇文章主要介紹了asp.net+Ligerui實(shí)現(xiàn)grid導(dǎo)出Excel和Word的方法,實(shí)例分析了asp.net結(jié)合jQuery的Ligerui插件操作excel和word文件的技巧,需要的朋友可以參考下2016-04-04vs2010根據(jù)字符串內(nèi)容添加斷點(diǎn)的方法介紹
這篇文章介紹了vs2010根據(jù)字符串內(nèi)容添加斷點(diǎn)的方法,有需要的朋友可以參考一下2013-08-08C#實(shí)現(xiàn)把圖片下載到服務(wù)器代碼
本文給大家分享的是實(shí)現(xiàn)這樣一個(gè)功能,想將遠(yuǎn)程服務(wù)器的圖片下載到本地主機(jī),圖片的名稱就是數(shù)據(jù)庫的一個(gè)字段,圖片不是以二進(jìn)制的形式存儲在數(shù)據(jù)庫的,數(shù)據(jù)庫存儲的只是圖片的名詞。2015-11-11asp.net下將純真IP數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫中的代碼
純真IP數(shù)據(jù)庫包含最新的IP信息,通過IP我們可以查詢訪問者的來路,地理位置!但下載下來的IP數(shù)據(jù)無法被我們直接調(diào)用,所以我們需要編寫代碼將IP寫入到數(shù)據(jù)庫中供我們使用!2011-01-01asp.net通過HttpModule自動在Url地址上添加參數(shù)
由于項(xiàng)目中有許多頁面需要用到cid參數(shù),所以想通過傳值cid來獲取數(shù)據(jù)。2010-01-01