1. 簡述Http協議?
- 超文本傳輸協議
- 特色:
- 無狀態,請求響應以後,再次發起請求時,不認識。
- 短鏈接,一次請求和一次響應就斷開鏈接。
- 格式:
- GET請求:輸入地址回車:https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F
請求由兩部分組成:請求頭和請求體,請求頭和請求體經過\r\n\r\n分割,請求頭和請求頭之間經過\r\n分割。
"""GET /new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F http1.1\r\nhtml
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36\r\ndjango
Host:jd.com\r\n\r\n"""
響應由兩部分組成:響應頭和響應體,
b'HTTP/1.1 200 OK\r\nDate: Mon, 05 Nov 2018 01:15:31 GMT\r\nServer: Apache\r\n瀏覽器
Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT\r\nETag: "51-47cf7e6ee8400"\r\nsocket
Accept-Ranges: bytes\r\nContent-Length: 81\r\nCache-Control: max-age=86400\r\nExpiresTue, 06 Nov 2018 01:15:31 GMT\r\n函數
Connection: Keep-Alive\r\nContent-Type: text/html\r\n\r\n <html><head> .... </html>'
- POST請求:
請求由兩部分組成:請求頭和請求體
"""POST /new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F http1.1\r\nspa
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36\r\nhtm
Host:jd.com\r\n\r\nusername=haoxu666&password=123"""中間件
響應:
b'HTTP/1.1 200 OK\r\n生命週期
Date: Mon, 05 Nov 2018 01:15:31 GMT\r\n路由
Server: Apache\r\nLast-Modified: Tue, 12 Jan 2010 13:48:00 GMT\r\n
ETag: "51-47cf7e6ee8400"\r\n
Accept-Ranges: bytes\r\n
Content-Length: 81\r\n
Cache-Control: max-age=86400\r\n
Expires:Tue, 06 Nov 2018 01:15:31 GMT\r\n
Connection: Keep-Alive\r\n
Content-Type: text/html\r\n\r\n
用戶名或密碼錯誤'
2. 你瞭解的請求頭都有什麼?
- User-Agent,設備信息。
- Host,當前訪問的主機名稱。
- referrer,作防盜鏈。
- Content-Type: ....
3. 你瞭解的請求方式有哪些?
- GET/POST/PUT/PATCH/DELETE/OPTIONS
4. django請求的生命週期
瀏覽器上輸入 http://www.oldboyedu.com 地址回車發生了什麼? - 瀏覽器輸入:http://www.oldboyedu.com 回車 - DNS解析,將域名解析成IP。 - 瀏覽器(socket客戶端),根據IP和端口(80)建立鏈接,發送請求。 - 服務端接收請求 - 實現了wsgi協議的模塊,如:wsgiref接收到用戶請求。 - 而後將請求轉交給django的中間件,執行中間件的process_request(process_view)。 - 路由系統進行路由匹配。 - 匹配成功執行視圖函數,視圖函數進行業務處理(ORM操做數據+模板渲染) - 交給中間件的process_response方法 - wsigref的socket.send,將結果返回給瀏覽器。 - 斷開socket鏈接。 - 瀏覽器斷開鏈接。