1. 程式人生 > 實用技巧 >.NET 5 中的隱藏特性

.NET 5 中的隱藏特性

一、什麼是HTTP協議
	HyperText Transfer Protocol,超文字傳輸協議
	HTTP:用於規定瀏覽器客戶端和伺服器之間的通訊方式(規則)
	HTTP協議主要規定了瀏覽器在傳送請求給伺服器時必須要遵循什麼格式
	以及規定了伺服器在做出迴應(響應)給瀏覽器時必須要遵循什麼格式

	HTTP工作時所遵循的原則:
	1)一次請求必須對應一次響應
	2)請求只能是瀏覽器傳送給伺服器,伺服器只能被動的等待請求,根據請求做出迴應

二、HTTP協議詳解
	HttpWatch瀏覽器外掛: 用於監聽瀏覽器和伺服器通訊的內容
	在一個較老版本的火狐瀏覽器上安裝這個外掛
1、Http請求資訊
	第一部分:請求行
		GET /news/hello.html HTTP/1.1
		1)GET: 提交方式,HTTP協議中一共規定了7種提交方式,其中5種都不常用,只用GET和POST
			GET提交和POST提交有什麼區別? 後面講
		2)/news/hello.html: 請求資源路徑,顯示了訪問哪一個應用下的哪一個資原始檔
		3)HTTP/1.1: 請求所遵循的協議和版本

	第二部分: 請求報頭(若干請求頭)	
		Host: localhost:8080 -- 指定訪問的主機名和埠
		User-Agent: Mozilla/5.0..Firefox/25.0 -- 指定客戶端的版本
		Accept: .. -- 客戶端能夠接受的資料型別
		...

	第三部分: 請求實體
		如果請求方式為GET,請求實體中不會有內容(請求實體是空的);
		如果請求方式為POST,並且請求中攜帶了資料,此時請求實體中才會有內容;
	
2、Http響應資訊
	第一部分:狀態行
		HTTP/1.1 200
		1)HTTP/1.1: 響應所遵循的協議和版本
		2)200: 狀態碼,表示請求處理的結果
			200: 表示請求處理是成功的!
			302: 表示瀏覽器需要進一步請求才可以訪問到對應的資源
			304/307: 表示讓瀏覽器使用以前快取的資原始檔
			404: 表示瀏覽器所請求的資源找不到(可能是瀏覽器的訪問路徑是錯誤的!)
			500: 表示伺服器內部出現錯誤(可能是伺服器在處理請求時丟擲了異常)
		3)OK: 和前面的狀態碼對應
			200 OK
			404 Not Found
			500 Internal Server Error
	第二部分: 響應報頭(若干響應頭)
		Content-Type: text/html -- 響應給瀏覽器的資料型別,text/html表示html格式的網頁
		Content-Length: 139 -- 響應給瀏覽器的資料長度,139位元組
		...
		
	第三部分: 響應實體
		響應實體:就是瀏覽器所請求的檔案內容
		比如:瀏覽器請求伺服器內部的一個hello.html檔案,伺服器在響應時,
			就會將hello.html檔案的內容作為響應實體傳送瀏覽器
	
		
補充內容1:什麼時候是GET提交?什麼時候是POST提交?
只有當使用表單(form)並且在表單上通過method屬性指定提交方式為POST時,才是POST提交,其它的都是GET提交(AJAX除外)。 思考題: (1)<form action="#"></form> -- GET提交 (2)<form action="#" method="GET"></form> -- GET提交 (3)<form action="#" method="POST"></form> -- POST提交 (4)點選超連結訪問伺服器,例如: <a href="http://www.baidu.com">百度一下</a> -- GET提交 (5)直接在瀏覽器的位址列中書寫URL地址訪問伺服器 -- GET提交 補充內容2:GET提交和POST提交的主要區別?
GET提交: 1) GET提交是在位址列URL地址的後面通過問號拼接引數將資料提交給伺服器 由於資料會顯示在位址列上,如果是隱私資料,非常的不安全 2) 通過位址列提交資料,資料量不能超過1KB或者4KB 更不能提交檔案 POST提交: 1) POST不是通過位址列提交資料,而是通過請求實體將資料帶給伺服器 由於資料是通過請求實體傳送資料,相對更加安全! 2) 通過請求實體提交資料,資料量理論上沒有限制! 使用場景: 1)如果只是單純做一個跳轉,或者只是訪問一個網頁,請求中沒有資料,都是使用GET提交。 2)如果在請求中有資料,但資料量不大,並且資料沒有隱私性,也儘量使用GET提交。 3)如果在請求中有資料,資料量比較大或者資料較為隱私,此時推薦使用POST提交, 如果是提交檔案,只能用POST提交。 <<圖解HTTP協議>>