HTTP 的作用就是指導(dǎo)瀏覽器和服務(wù)器如何進(jìn)行溝通。每個(gè)電腦都有很多端口,每一個(gè)端口都要做指定的事情
??a. 瀏覽器負(fù)責(zé)發(fā)起請(qǐng)求
??b. 服務(wù)器在 80 端口接收請(qǐng)求
??c. 服務(wù)器負(fù)責(zé)返回內(nèi)容(響應(yīng))
??d. 瀏覽器負(fù)責(zé)下載響應(yīng)內(nèi)容
請(qǐng)求示例:
curl -s -v -H "Frank: xxx" -- "https://www.baidu.com"
用get請(qǐng)求百度:
1. GET / HTTP/1.1 /*動(dòng)詞+路徑(無(wú)意義跟文件沒(méi)有任何關(guān)系)+協(xié)議*/
2. Host:baidu.com /*我想訪問(wèn)baidu.com */
3. Accpet:text/html /*我希望接收到的是html文件 */
百度給的響應(yīng):
1. HTTP/1.1 200 OK /*我是HTTP/1.1,ok,沒(méi)有問(wèn)題,你需要什么我可以給你什么*/
2. Content-Type:text-html;charset=utf-8 /* Content-Type的內(nèi)容就是你想要的文件再給你一個(gè)字符集,方便你解釋中文*/
Content-Length:10000 /*我傳給你的html長(zhǎng)度是10000個(gè)字節(jié)*/
3. 回車(\n)
4. <!DOCTYPE>
<html>…</html>/*這個(gè)就是百度傳給我們的文件內(nèi)容,中間部分省略*/
用POST 請(qǐng)求百度(登錄百度):
Post /login HTTP/1.1 /*用post發(fā)請(qǐng)求來(lái)登錄,用的是HTTP/1.1協(xié)議*/
Host:baidu.com /*登錄百度*/
Accept:application/json /*想要接收json*/
Content-Type:application/x-www-form-urlencoded /*發(fā)內(nèi)容給它*/
Content-Length:10
回車(\n)
Username:fangfang&password:mima /*這是我上傳的內(nèi)容*/
百度給的響應(yīng):
1. HTTP/1.1 403 Forbidden /*禁止登錄*/
2. Content-Type: application/json
Content-Length:200
3. 回車(\n)
4. {“error”:密碼錯(cuò)誤}
請(qǐng)求的形式總結(jié):
第一部分:動(dòng)詞 路徑 協(xié)議/版本 HTTP/1.1
第二部分:你要告訴訪問(wèn)的主機(jī)你想要什么
第三部分:按回車(\n)
第四部分:要獲取/上傳的數(shù)據(jù)
響應(yīng)的形式總結(jié):
第一部分:協(xié)議號(hào)/版本號(hào) 狀態(tài)碼 狀態(tài)解釋
第二部分:訪問(wèn)的主機(jī)告訴你它給你了什么(第二部分是對(duì)第四部分格式的標(biāo)注)
第三部分:按回車(\n)
第四部分:訪問(wèn)的主機(jī)傳回給我們的文件內(nèi)容
get和post的區(qū)別:get是獲取內(nèi)容;post是上傳內(nèi)容
用 Chrome 發(fā)請(qǐng)求:
- 打開(kāi) Network
- 地址欄輸入網(wǎng)址
- 在 Network 點(diǎn)擊,查看 request,點(diǎn)擊「view source」就可以看到請(qǐng)求的前三部分了
- 如果有請(qǐng)求的第四部分,那么在 FormData 或 Payload 里面可以看到
用 Chrome 查看響應(yīng)
- 打開(kāi) Network
- 輸入網(wǎng)址
- 選中第一個(gè)響應(yīng)
- 查看 Response Headers,點(diǎn)擊「view source」你會(huì)看到響應(yīng)的前兩部分
- 查看 Response 或者 Preview,你會(huì)看到響應(yīng)的第 4 部分
資源
狀態(tài)碼詳解