3,網站WebSite和WebApplication的區別。
1) WebApplication編譯運行後,你修改後台C#代碼,你重新整理網頁,內容不會改變。重新編譯暈,內容會改變。
網站WebSite,你修改後台C#代碼,重新整理頁面,內容會改變。不用關閉啟動瀏覽器。
2)WebSite沒有namespace,WebApplication有namespace 。
因此WebSite用來學習,WebApplication用來開始實際項目比較好。
4,基於ashx方式的ASP.Net開發1
.aspx開發,微軟給你封裝了很多函數,因此你可以很方便開發。.ashx開始,是最原始的開發,最基礎的web開發。僅僅根據http協議進行開發。
輸入url,以及在網頁提交表單,都是瀏覽器向伺服器進行請求Request。伺服器處理完Request,要把處理結果返回給瀏覽器,這個叫響應Response。
別看.aspx你輸入什麼,他處理你的輸入後,除了輸出處理結果,輸入前在的東西也輸出。他是把這些東西記錄下來又重新輸出一遍。如同:
寫好的一個HTML頁面,物理讀進來,對使用者輸入進行處理,把處理結果輸出到HTML可替換的自訂標誌部位,然後和HTML其他不變的地方輸出。
原來Response.Write("a"),再Response.Write("b"),輸出ab,後一個Response.Write不會覆蓋前面一個。
5,ASP.Net的IsPostBack揭秘
為了請求,返回的內容一樣,將頁面儲存為一個html模板文本,模板中有一些待填值的預留位置,第一次進入頁面的時候就直接存取ashx,讀取html模板,將待填值預留位置設定為空白,然後輸出到瀏覽器。
為了區分是第一次直接進入頁面還是點擊提交以後進入頁面,在form中增加一個隱藏欄位:<input type="hidden" name="ispostback" value="true" />,如果能夠從Request中讀取到ispostback=true就說明是點擊提交以後重新進入ashx,否則就是第一次進入ashx。ispostback就是一個標誌位。
6,Get和Post的區別
可以設定表單form的提交方式method,get是url傳遞,post是隱藏在http報文傳遞。get傳遞的數量有限,post無限,所以可以用post來傳遞檔案。
使用post傳遞,點瀏覽器重新整理會有重新提交的提示。重新整理,就是重複上一次提交的內容。
get傳遞的參數在服務端檔案名稱後面的?標誌,可以提交多個索引值對,之間用&進行風格,如果url中有漢字或其它符號,則要進行url編碼。
表單域只有設定了name的才會被提交給伺服器。
7,8,9,11,12,13,14
input自增和div自增。input text本身通過表單遞交資料到伺服器,伺服器進行遞增處理,然後返回給用戶端input text。
div自增,首先使用者請求頁面,
input hidden value的值是一個預留位置。伺服器依據ispostback欄位(其實,也可以根據submit的value值)判斷是第一次進入頁面,還是回傳進入頁面。如果是第一次進入頁面,就把input hidden value初始化為0。如果是回傳,也就是點擊submit提交表單,就將input hidden value遞增,然後返回給用戶端。
也就是說,input text不用input hidden就能自增,而div要用input hidden才能自增。這個inpt hidden就是ASP.NET的ViewState。
使用ViewStateDecoder2可以對ASP.NET頁面的ViewState進行解碼。
15 ASP.NET中使用Cookie
你的每次請求都是全新的請求,這樣會限制很多互動功能。因此出現了cookie,類似於人的病曆本。cookie的索引值資料key/value,對於複雜資料,以json格式儲存;範圍,不同的網域名稱,對應不同的範圍,a.b.com和c.b.com是不同的域,最佳化,對於同張網頁上的圖片,css,js指令碼,最好放在不同的域下,這樣會使請求大小少很多;到期時間,用來刪除cookie。
對於cookie更多學習,可以參考http://www.cnblogs.com/fish-li/archive/2011/07/03/2096903.html
16ASP.NET Session原理
首先,伺服器有一個全域的字典變數,用來儲存key和value,value的類型是object。針對每個訪問者產生一個GUID,並寫入訪問者的Cookie。訪問者第二次訪問,依據他的GUID,進行特別處理。
因為全域,所以占記憶體。可以儲存複雜的資料,以及比較私密的資料。
17,18,19,20驗證碼案例說明
使用者第一次請求頁面,伺服器用代碼產生帶有四個數位圖片,這四個數字又寫入Session中。 使用者輸入四個數字,提交到伺服器與Session的四個數字進行比較,相同的話,進行相關處理;不相同的話,也進行相關處理。
驗證碼用來防止使用者暴力破解。
21,22HTTP協議
串連,請求,響應。
瀏覽器發送串連到伺服器,串連是瀏覽器和伺服器資料轉送的通道,一般請求完畢,串連就關閉。
請求包括,請求方式get或者post,和http協議;資料的壓縮方法,gzip或deflate;瀏覽器支援的語言,比如中文或英文;是否一直保持串連;Cookie;瀏覽器的版本資訊;
響應,是伺服器發送給瀏覽器。包括響應碼,200 ok,403 禁止訪問,404 頁面找不到 ,503 訪問人數太多;伺服器類型;返回的資料類型,圖片,css,js或者二進位檔案,html;資料內容的長度;
xss漏洞
沒有對使用者提交的資料,進行驗證,轉換為安全資料造成。使使用者可以執行他自己編寫的指令碼。