一、: 一些特殊字符的簡(jiǎn)單理解
#:
1. 代表網(wǎng)頁(yè)中的一個(gè)位置
其右面的字符,就是該位置的標(biāo)識(shí)符。比如,http://www.example.com/index.html#print就代
表網(wǎng)頁(yè)index.html的print位置。瀏覽器讀取這個(gè)URL后,會(huì)自動(dòng)將print位置滾動(dòng)至可視區(qū)域。
2. HTTP請(qǐng)求不包括#
#是用來(lái)指導(dǎo)瀏覽器動(dòng)作的,對(duì)服務(wù)器端完全無(wú)用。所以,HTTP請(qǐng)求中不包括#。比如,訪問(wèn)下面的網(wǎng)址,http://www.example.com/index.html#print,瀏覽器實(shí)際發(fā)出的請(qǐng)求是這樣的:
GET /index.html HTTP/1.1
Host: www.example.com
3. #后的字符
在第一個(gè)#后面出現(xiàn)的任何字符,都會(huì)被瀏覽器解讀為位置標(biāo)識(shí)符。這意味著,這些字符都不會(huì)被發(fā)送到服務(wù)器端。比如,下面URL的原意是指定一個(gè)顏色值:http://www.example.com/?color#fff,但是,瀏覽器實(shí)際發(fā)出的請(qǐng)求是:
GET /?color= HTTP/1.1
Host: www.example.com
?:
1. 連接傳入?yún)?shù)
http://www.example.com/homepage.do?id=77&nameid=0001&page=1
2.繞過(guò)緩存
http://www.example.com/homepage.do
http://www.example.com/homepage.do?foo
不調(diào)用緩存的內(nèi)容,重新讀取。
&:
1. 參數(shù)間隔符
地址欄中?后面的參數(shù),如果是多個(gè)參數(shù),用&隔開(kāi),打個(gè)比方:
http://www.example.com/homepage.do?id=77&nameid=0001&page=1
二、: GET和POST請(qǐng)求的區(qū)別
首先URL成為資源描述符,可以認(rèn)為是描述網(wǎng)絡(luò)上面的一個(gè)資源,而HTTP的四種請(qǐng)求方式分別對(duì)應(yīng)于這個(gè)資源的四種操作:
==GET==->==查==
==POST==->==改==
==PUT==->==增==
==DELETE==->==刪==
主要說(shuō)一下post和get的區(qū)別:(get和post都是客戶端向服務(wù)器發(fā)送請(qǐng)求的一種方法)
GET:通俗的講是請(qǐng)求服務(wù)器將請(qǐng)求中的URL對(duì)應(yīng)的資源返回給客戶端,至于所謂的明文請(qǐng)求,是因?yàn)榉?wù)區(qū)獲取get的參數(shù)是用request.queryString(獲取地址欄的參數(shù)),就是地址欄中?后面的參數(shù),如果是多個(gè)參數(shù),用&隔開(kāi)
POST:是請(qǐng)求服務(wù)器允許客戶端向服務(wù)器提交數(shù)據(jù)的一種請(qǐng)求,服務(wù)器獲取post請(qǐng)求參數(shù)的方法是requset.from(表單),而所謂的安全性,和性質(zhì)是不一樣的,get就像是查詢操作,只讀不寫,而post是要向服務(wù)器提交數(shù)據(jù),提交之后,服務(wù)器資源發(fā)生變化。
而且get的請(qǐng)求附在URL的后面,可以在地址欄看到,如果瀏覽器不清除數(shù)據(jù),容易泄露信息,而
post是把提交的數(shù)據(jù)放在實(shí)體主體中,一般無(wú)法查看,互相對(duì)安全。
get提交的請(qǐng)求,數(shù)字和英文,會(huì)原樣發(fā)送,如果是空格,會(huì)轉(zhuǎn)換成+,如果是中文或者其他字符,需要用base64加密(如果是+,容易被攔截)
附上大佬對(duì)get和post的看法:如有不懂,可看此篇文章