面試的時(shí)候總是會(huì)有關(guān)于http協(xié)議的問題桨嫁,通過查找資料强法,我把知識(shí)點(diǎn)總結(jié)一下。
1膏萧、說一下什么是Http協(xié)議漓骚?
對器客戶端和 服務(wù)器端之間數(shù)據(jù)傳輸?shù)母袷揭?guī)范蝌衔,格式簡稱為“超文本傳輸協(xié)議”。
2蝌蹂、什么是Http協(xié)議無狀態(tài)協(xié)議噩斟?怎么解決Http協(xié)議無狀態(tài)協(xié)議?(曾經(jīng)去某創(chuàng)業(yè)公司問到)
1叉信、無狀態(tài)協(xié)議對于事務(wù)處理沒有記憶能力亩冬。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息
2、無狀態(tài)協(xié)議解決辦法: 通過1硼身、Cookie 2硅急、通過Session會(huì)話保存。
3佳遂、說一下Http協(xié)議中302狀態(tài)
http協(xié)議中营袜,返回狀態(tài)碼302表示重定向。
這種情況下丑罪,服務(wù)器返回的頭部信息中會(huì)包含一個(gè) Location 字段荚板,內(nèi)容是重定向到的url
4、Http協(xié)議有什么組成吩屹?
請求報(bào)文包含三部分:
a跪另、請求行:包含請求方法、URI煤搜、HTTP版本信息
b免绿、請求首部字段
c、請求內(nèi)容實(shí)體
響應(yīng)報(bào)文包含三部分:
a擦盾、狀態(tài)行:包含HTTP版本嘲驾、狀態(tài)碼、狀態(tài)碼的原因短語
b迹卢、響應(yīng)首部字段
c辽故、響應(yīng)內(nèi)容實(shí)體
5、Http協(xié)議中有那些請求方式腐碱?
GET: 用于請求訪問已經(jīng)被URI(統(tǒng)一資源標(biāo)識(shí)符)識(shí)別的資源誊垢,可以通過URL傳參給服務(wù)器
POST:用于傳輸信息給服務(wù)器,主要功能與GET方法類似症见,但一般推薦使用POST方式喂走。
PUT: 傳輸文件,報(bào)文主體中包含文件內(nèi)容筒饰,保存到對應(yīng)URI位置缴啡。
HEAD: 獲得報(bào)文首部壁晒,與GET方法類似瓷们,只是不返回報(bào)文主體,一般用于驗(yàn)證URI是否有效。
DELETE:刪除文件谬晕,與PUT方法相反碘裕,刪除對應(yīng)URI位置的文件。
OPTIONS:查詢相應(yīng)URI支持的HTTP方法攒钳。
6帮孔、Http協(xié)議中Http1.0與1.1區(qū)別?
在http1.0中不撑,當(dāng)建立連接后文兢,客戶端發(fā)送一個(gè)請求,服務(wù)器端返回一個(gè)信息后就關(guān)閉連接焕檬,當(dāng)瀏覽器下次請求的時(shí)候又要建立連接姆坚,顯然這種不斷建立連接的方式,會(huì)造成很多問題实愚。
5.在http1.1中兼呵,引入了持續(xù)連接的概念,通過這種連接腊敲,瀏覽器可以建立一個(gè)連接之后击喂,發(fā)送請求并得到返回信息,然后繼續(xù)發(fā)送請求再次等到返回信息碰辅,也就是說客戶端可以連續(xù)發(fā)送多個(gè)請求懂昂,而不用等待每一個(gè)響應(yīng)的到來。
get與post請求區(qū)別乎赴?(初級程序員必備問題)
區(qū)別一:
get重點(diǎn)在從服務(wù)器上獲取資源狞洋,post重點(diǎn)在向服務(wù)器發(fā)送數(shù)據(jù);
區(qū)別二:
get傳輸數(shù)據(jù)是通過URL請求邑退,以field(字段)= value的形式黑界,置于URL后,并用"?"連接羹蚣,多個(gè)請求數(shù)據(jù)間用"&"連接原探,如http://127.0.0.1/Test/login.action?name=admin&password=admin,這個(gè)過程用戶是可見的顽素;
post傳輸數(shù)據(jù)通過Http的post機(jī)制咽弦,將字段與對應(yīng)值封存在請求實(shí)體中發(fā)送給服務(wù)器,這個(gè)過程對用戶是不可見的胁出;
區(qū)別三:
Get傳輸?shù)臄?shù)據(jù)量小型型,因?yàn)槭躑RL長度限制,但效率較高全蝶;
Post可以傳輸大量數(shù)據(jù)闹蒜,所以上傳文件時(shí)只能用Post方式寺枉;
區(qū)別四:
get是不安全的,因?yàn)閁RL是可見的绷落,可能會(huì)泄露私密信息姥闪,如密碼等;
post較get安全性較高砌烁;
區(qū)別五:
get方式只能支持ASCII字符筐喳,向服務(wù)器傳的中文字符可能會(huì)亂碼。
post支持標(biāo)準(zhǔn)字符集函喉,可以正確傳遞中文字符避归。
9、Http請求報(bào)文與響應(yīng)報(bào)文格式管呵?
請求報(bào)文包含三部分:
a槐脏、請求行:包含請求方法、URI撇寞、HTTP版本信息
b顿天、請求首部字段
c、請求內(nèi)容實(shí)體
響應(yīng)報(bào)文包含三部分:
a蔑担、狀態(tài)行:包含HTTP版本牌废、狀態(tài)碼、狀態(tài)碼的原因短語
b啤握、響應(yīng)首部字段
c鸟缕、響應(yīng)內(nèi)容實(shí)體
10、常見Http協(xié)議狀態(tài)排抬?
200:請求被正常處理
204:請求被受理但沒有資源可以返回
206:客戶端只是請求資源的一部分懂从,服務(wù)器只對請求的部分資源執(zhí)行GET方法,相應(yīng)報(bào)文中通過Content-Range指定范圍的資源蹲蒲。
301:永久性重定向
302:臨時(shí)重定向
303:與302狀態(tài)碼有相似功能番甩,只是它希望客戶端在請求一個(gè)URI的時(shí)候,能通過GET方法重定向到另一個(gè)URI上
304:發(fā)送附帶條件的請求時(shí)届搁,條件不滿足時(shí)返回缘薛,與重定向無關(guān)
307:臨時(shí)重定向,與302類似卡睦,只是強(qiáng)制要求使用POST方法
400:請求報(bào)文語法有誤宴胧,服務(wù)器無法識(shí)別
401:請求需要認(rèn)證
403:請求的對應(yīng)資源禁止被訪問
404:服務(wù)器無法找到對應(yīng)資源
500:服務(wù)器內(nèi)部錯(cuò)誤
503:服務(wù)器正忙
11、Http協(xié)議首部字段表锻?
a恕齐、通用首部字段(請求報(bào)文與響應(yīng)報(bào)文都會(huì)使用的首部字段)
Date:創(chuàng)建報(bào)文時(shí)間
Connection:連接的管理
Cache-Control:緩存的控制
Transfer-Encoding:報(bào)文主體的傳輸編碼方式
b、請求首部字段(請求報(bào)文會(huì)使用的首部字段)
Host:請求資源所在服務(wù)器
Accept:可處理的媒體類型
Accept-Charset:可接收的字符集
Accept-Encoding:可接受的內(nèi)容編碼
Accept-Language:可接受的自然語言
c瞬逊、響應(yīng)首部字段(響應(yīng)報(bào)文會(huì)使用的首部字段)
Accept-Ranges:可接受的字節(jié)范圍
Location:令客戶端重新定向到的URI
Server:HTTP服務(wù)器的安裝信息
d显歧、實(shí)體首部字段(請求報(bào)文與響應(yīng)報(bào)文的的實(shí)體部分使用的首部字段)
Allow:資源可支持的HTTP方法
Content-Type:實(shí)體主類的類型
Content-Encoding:實(shí)體主體適用的編碼方式
Content-Language:實(shí)體主體的自然語言
Content-Length:實(shí)體主體的的字節(jié)數(shù)
Content-Range:實(shí)體主體的位置范圍补胚,一般用于發(fā)出部分請求時(shí)使用
12、Http與Https優(yōu)缺點(diǎn)追迟?
a、通信使用明文不加密骚腥,內(nèi)容可能被竊聽敦间,也就是被抓包分析。
b束铭、不驗(yàn)證通信方身份廓块,可能遭到偽裝
c、無法驗(yàn)證報(bào)文完整性契沫,可能被篡改
HTTPS就是HTTP加上加密處理(一般是SSL安全通信線路)+認(rèn)證+完整性保護(hù)
13带猴、Http優(yōu)化
利用負(fù)載均衡優(yōu)化和加速HTTP應(yīng)用
14、Http協(xié)議有那些特征懈万?
1拴清、支持客戶/服務(wù)器模式;2会通、簡單快速口予;3、靈活涕侈;4沪停、無連接;5裳涛、無狀態(tài)木张;