Request成員:
1.Request.UrlReferer 請求的來源,可以根據這個判斷從百度搜的哪個關鍵詞,防下載盜鏈,防圖片盜鏈,可以偽造(比如迅雷)。
2.Request.UserHostAddress獲得訪問者的IP地址
3.Request.MapPath(virtualPath):將虛擬路徑轉換為磁碟上的實體路徑。
圖片防盜鏈的思想就是將用戶端上次請求的URL資訊和當前客戶請求的URL資訊進行比較,如果同在一個網域名稱下或同一個IP地址下,
就說明是自己網站內部的頁面 在申請自己網站內部的圖片。在一般處理常式中,簡單代碼如下:
Uri uri1 = context.Request.UrlReferrer;
Uri uri2 = context.Request.Url;
if (Uri.Compare(uri1, uri2, UriComponents.HostAndPort, UriFormat.SafeUnescaped, StringComparison.OrdinalIgnoreCase) != 0)
{
context.Response.Clear();
context.Response.Close();
}
else
{
}
Response對象成員
響應的緩衝輸出:為了提高伺服器的效能,ASP.Net向瀏覽器Write的時候預設並不會沒Write一次
都會立即輸出到瀏覽器,而是會快取資料,到合適的時機或是響應結束才能將緩衝區的資料一起發送到瀏覽器。
Response對象的主要成員:
Response.Buffer,Response,BuffetOutput:這兩個其實是一樣,用來控制是否採用響應緩衝,預設是true;
Response.Flush()將緩衝區中的資料發送給瀏覽器。這在需要將write出來的內容立即輸出到瀏覽器的場合非常的使用。
例如:我們可以使用一個小例子來類比Response.Flush()的效果:
在一般處理常式中:
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/html";
for (int i = 0; i < 20; i++)
{
context.Response.Write(i);
context.Response.Flush();
System.Threading.Thread.Sleep(500);
}
}
使用response.flush那麼數字是一個一個蹦出來的。
如果不適用,數字一口氣會都載入下來。
Response.Clear()清空緩衝區中的資料,這樣在緩衝區中的沒有發送到瀏覽器端的資料被清空,不會被發送到瀏覽器。
Response.ContentEncoding輸出資料流的編碼。
Resoponse.ContentType輸出資料流的內容類型。比如是html(text/html)還是普通文本(text/plain)還是JPEG圖片(image/JPEG);
Response.OutputStream輸出資料流,在輸出圖片。Excel檔案等非常值內容的時候也要使用它。
Response.End()終止響應,將之前緩衝中的資料發給瀏覽器,End()之後的代碼不會被繼續執行,在反編譯器內部,End方法調用了Flush()方法,
在終止一些非法請求的時候,可用End()終止請求。
Server屬性:
Server屬性是HttpServerHtility的一個執行個體,它對工隊伺服器上的方法和屬性的訪問。
Server.MapPath():擷取檔案的實體路徑
Server.Execute和transfer():執行另一個頁面的指令碼
server.HtmlEncode()和HtmlDecode()方法:將文本編碼成可以在瀏覽器中科正確瀏覽的格式
server.UrlEncode方法和UrlDecode方法:URL編碼和解碼
Server.Tranfser()和ResponseRedirect()的區別:
Server.Tranfser()是伺服器內部的接管(不可以重新導向到外部網站),這個重新導向是和瀏覽器沒有任何關係的,索引瀏覽器的地址欄不會發生變化。
Response.Redirect ()可以重新導向到外部網站