我不知道,如果我只是過於樂觀,但有沒有辦法隱藏在URL中返回的查詢字符串?ASP.NET:隱藏在查詢字符串的URL
我在這個場景是在那裏我有page1.aspx這個通過後重定向命令到外部服務器,並返回它page2.aspx。我遇到的唯一問題是返回的變量的查詢字符串仍然保留在URL中。
我只是想隱藏從普通用戶的醜串/信息。那麼,有沒有辦法來編輯和重新加載,在頁面加載方法還是我只需要保存一箇中間人頁面上的變量,然後打2
我不知道,如果我只是過於樂觀,但有沒有辦法隱藏在URL中返回的查詢字符串?ASP.NET:隱藏在查詢字符串的URL
我在這個場景是在那裏我有page1.aspx這個通過後重定向命令到外部服務器,並返回它page2.aspx。我遇到的唯一問題是返回的變量的查詢字符串仍然保留在URL中。
我只是想隱藏從普通用戶的醜串/信息。那麼,有沒有辦法來編輯和重新加載,在頁面加載方法還是我只需要保存一箇中間人頁面上的變量,然後打2
頁,我不喜歡這種方法,但它會奏效。
一旦你知道你是你需要的地方,你可以Response.Redirect到同一頁面,他們將會消失。
什麼是這些查詢字符串變量的由來?你不能提交所有的數據作爲POST數據,所以沒有查詢字符串?
你可能也使用
Context.RewritePath("/foo.aspx")
這裏有一個ScottGu博客文章URL重寫的鏈接。
http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx
一段時間回來我做了一些HTTP編碼加密/解密用於此目的的方法。有時在asp.net中,您需要使用查詢字符串,但您還需要最終用戶不知道該值。我所做的是base 64編碼,對值進行加密,根據我的私鑰對值進行散列,然後用 - 將它們粘在一起。另一方面,我檢查左側散列以驗證真實性,並解密右側。一個非常好的問題是+(這是一個有效的base64字符串值)等於html編碼中的空格,所以我在解密時考慮到這一點。
我用這是加密值添加到查詢字符串,然後對其進行解密在另一側
private const string KEY = "<random value goes here>";
public static string EncryptAndHash(this string value)
{
MACTripleDES des = new MACTripleDES();
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
des.Key = md5.ComputeHash(Encoding.UTF8.GetBytes(KEY));
string encrypted = Convert.ToBase64String(des.ComputeHash(Encoding.UTF8.GetBytes(value))) + '-' + Convert.ToBase64String(Encoding.UTF8.GetBytes(value));
return HttpUtility.UrlEncode(encrypted);
}
/// <summary>
/// Returns null if string has been modified since encryption
/// </summary>
/// <param name="encoded"></param>
/// <returns></returns>
public static string DecryptWithHash(this string encoded)
{
MACTripleDES des = new MACTripleDES();
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
des.Key = md5.ComputeHash(Encoding.UTF8.GetBytes(KEY));
string decoded = HttpUtility.UrlDecode(encoded);
// in the act of url encoding and decoding, plus (valid base64 value) gets replaced with space (invalid base64 value). this reverses that.
decoded = decoded.Replace(" ", "+");
string value = Encoding.UTF8.GetString(Convert.FromBase64String(decoded.Split('-')[1]));
string savedHash = Encoding.UTF8.GetString(Convert.FromBase64String(decoded.Split('-')[0]));
string calculatedHash = Encoding.UTF8.GetString(des.ComputeHash(Encoding.UTF8.GetBytes(value)));
if (savedHash != calculatedHash) return null;
return value;
}
謝謝馬特布里格斯resoultion ..我一直在尋找這個解決方案相當一段時間,並在這裏找到它。奇蹟般有效 。非常感謝 :) – 2010-02-23 17:26:58
的方式它保留查詢字符串和表單變量(任選地)。它不顯示在用戶Web瀏覽器中重定向請求的真實URL。 Server.Transfer
在瀏覽器不知道任何事情的情況下發生。瀏覽器請求頁面,但服務器返回另一頁面的內容。
protected void btnServer_Click(object sender, EventArgs e)
{
Server.Transfer("~/About.aspx?UserId=2");
}
它從外部服務器返回,它遇到了我的page2.aspx,URL是localhost/page2.aspx?results = data。所以我沒有控制它是如何擊中第2頁的,我只是想將地址欄中的信息隱藏起來 – Jared 2009-09-29 17:16:43
然後我同意瑞克的說法,重定向就是要走到這裏的路。 – RedFilter 2009-09-29 17:41:03