2010-09-17 89 views
12

我覺得我已經做了很多次,但我不能爲我的生活弄清楚什麼是錯誤的。ASP.NET - Response.Redirect不填充網址推薦人

的Default.aspx:

protected void Page_Load(object sender, EventArgs e) 
{ 
    var r1 = Request.UrlReferrer; // null 
    var r2 = Request.ServerVariables["HTTP_REFERRER"]; // null 
} 

SingleSignOn.aspx:

protected void Page_Load(object sender, EventArgs e) 
{ 
    Response.Redirect("/"); 
} 

如果我在網址欄中輸入 「/SingleSignOn.aspx」,它重定向到Default.aspx的,但引用者爲空。

我在這裏失蹤了什麼?

什麼我嘗試做(這是一個簡單的例子),是在任何網頁上,我會有一些JavaScript來做到以下幾點:

window.location.replace('~/SingleSignOn.aspx'); 

哪,你猜對了,簽署用戶,並重定向到主頁。

但我需要建立邏輯到該JavaScript不重定向到SingleSignOn.aspx頁面,如果我們剛剛從那裏。

引薦者是否只通過實際的鏈接用戶點擊來填充?

我該怎麼做呢?我不想使用QueryString,因爲我不想在URL中看到它。

我能想到的唯一的其他選項是Session。

請幫忙。 =(

+0

好奇地知道你爲什麼要重定向java-script。你描述的場景,我會檢查服務器端(可能是基本頁面的OnInit),如果用戶驗證或不驗證,如果沒有,則重定向到這樣做的頁面。 – VinayC 2010-09-17 05:13:58

+0

@VinayC - 它很複雜。基本上我在Facebook Connect應用程序上工作 - 頁面加載後,JavaScript讓我知道我能夠簽署他們,因此我重定向。我不知道我是否可以簽署他們,直到執行客戶端API。 – RPM1984 2010-09-17 05:22:44

+0

那麼,你可以添加自己的cookie,當用戶通過身份驗證,然後從javacript,你可以看到cookie是否存在或不決定是否重定向。如果你不想使用cookie,那麼你的頁面(應該在基本頁面中完成)必須設置一些JS變量,如果用戶被認證。 cookie方法之間的區別在於cookie只需設置一次(在SingleSignOn.aspx中),而必須在每個頁面中設置js變量(因此邏輯應放置在公共基本頁面中)。 – VinayC 2010-09-17 05:29:35

回答

9

所以,我做了一些Google'ing找到我的答案

沒有感謝堆棧溢出 - 開玩笑,=)

所以URL引薦並只通過一個實際的客戶端填寫 - 點擊(錨點標記,按鈕)。

不是當您手動將其放入URL(這是我的JavaScript正在做什麼)。

我所要做的解決方案是在SingleSignOn.aspx頁面上創建一個cookie,並在再次重定向之前從JavaScript中讀取該cookie。

正是我需要的,更多的餅乾。 =(

除非有人在這裏有一個更好的主意,那就是生病與去

+1

非常感謝,我需要一個非常類似的解決方案,因爲我正在修改一個大雜燴嚮導,實際上你可以跳過步驟,因爲他們沒有驗證推薦人。我也嘗試過'UrlReferrer',它在開發中工作,在部署到IIS時失敗。 Cookie解決方案非常完美! – 2013-01-24 14:56:12

0

只是一種預感,而是嘗試使用一個絕對的URL,而不是/甚至包括HTTP://部分

也就是說,你不應該依賴於UrlReferrer的存在,因爲它可以從客戶端剝離(通過插件,不確定是否通過某些瀏覽器配置)。

+0

是的,我試過了,看到我的回答上面 - 只有客戶端點擊(按鈕,錨點)將導致引用的http頭被填充。 – RPM1984 2010-09-17 08:59:03

+0

@ RPM1984 k,但重定向(「/」)並不完全如我所說,它會像Redirect(「http://myserver.com/」)。 – eglasius 2010-09-17 09:05:41

+0

是的 - 嘗試過,也嘗試過在一個全新的Web項目中(所以沒有其他因素 - 即URL重寫會阻礙)。不行。無論如何,cookie解決方案正在工作,而且我需要從客戶端「檢查」前一頁的事實,這使得它很容易成爲cookie。謝謝你的幫助。 – RPM1984 2010-09-17 23:26:19