一.響應協議html
格式:瀏覽器
(1)響應首行:HTTP協議版本,不可默認緩存
(2)響應頭信息:能夠默認服務器
響應內容是由服務器發送給瀏覽器的內容,瀏覽器會根據響應內容來顯示socket
(3)空行:ui
(4)響應體:url
響應內容是由服務器發送給瀏覽器的你內容,瀏覽器會根據相應內容來顯示。遇到<img src=」>會開一個新的線程加載,因此有時圖片多的話,內容會先顯示,而後圖片纔會一張張加載出來。線程
狀態碼:3d
(1)200:請求成功,瀏覽器會把響應體內容(一般是HTML)顯示在瀏覽器中;htm
(2)404:請求的資源沒有找到,說明客戶端錯誤的請求了不存在的資源呢;
(3)500:請求資源找到了,可是服務器內部出現了錯誤;
(4)305:重定向:當響應碼爲302時,表示服務器要求瀏覽器從新發一個請求
服務器會發送個響應頭Location,它指定了新請求的URL地址。
(5)304:當用戶第一次請求index.html時,服務器會添加一個名爲Last-Modified響應頭,這個頭說明了index.html的最後修改時間,瀏覽器會把index.html內容,以及最後響應時間緩存下來。當用戶第二次請求index.html時,在請求中包含一個名爲If-Modified-Since請求頭,它的值就是第一次請求時服務器經過Last-Modified響應頭髮送給瀏覽器的值,即index.html最後的修改時間,If-Modified-Since請求頭就是在告訴服務器,我這裏瀏覽器緩存的index.html最後修改時間是這個,您看看如今的index.html最後修改時間是否是這個,若是仍是,那麼您就不用再響應這個index.html內容了,我會把緩存的內容直接顯示出來。而服務器端會獲取If-Modified-Since值,與index.html的當前最後修改時間比對,若是相同,服務器會發響應碼304,表示index.html與瀏覽器上次緩存的相同,無需再次發送,瀏覽器能夠顯示本身的緩存頁面,若是比對不一樣,那麼說明index.html已經作了修
改,服務器會響應200。
自動刷新響應頭:瀏覽器會在3秒以後請求http://www.baidu.com:
例如:Refresh: 3;url=http://www.baidu.com
練習:
在瀏覽器中打開本地文件,遠程鏈接
import socket sock=socket.socket() sock.bind(("127.0.0.1",8080)) sock.listen(5) while 1: conn,addr=sock.accept() conn.recv(1024) conn.send(b"HTTP/1.1 200 ok\r\n\r\n <h1>hello yuan</h1> <img src='https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1494842164403&di=e7fd7f308255c82df8bf58dca55d63e8&imgtype=0&src=http%3A%2F%2Fimg4.duitang.com%2Fuploads%2Fitem%2F201511%2F14%2F20151114033959_3drwk.jpeg'>") conn.close() >>