web應用程序+HTTP協議

標籤(空格分隔): Djangopython


web應用程序案例:

若是咱們想經過本身電腦訪問京東,就是一個網絡編程(由於京東的服務部署在京東,經過本身的電腦瀏覽器傳輸到京東服務就是網絡編程);只要涉及到網絡編程就要用到socket;
以下咱們模擬一個訪問,就會用到socket網絡編程,以下咱們在本身的本地模擬個服務器
pycharm代碼編寫:web

import socket
sock=socket.socket()
#以下是本機訪問地址
sock.bind(("127.0.0.1",8800))
sock.listen(5)
#等待用戶鏈接
while 1:
#conn客戶端套節字對象,
    conn,addr=sock.accept()
    data=conn.recv(1024)
    print(data)
    conn.send(b"HTTP/1.1 200 OK\r\n\r\n<helllowearesutdying")
    conn.close()

2.編寫完成了,開啓服務器:
3.客戶端瀏覽器查看:127.0.0.1:8800編程

image.png-49.4kB
說明並無按照響應的格式給到服務器,沒法解析,這時候瀏覽器傻眼了,他不知道:helllowearesutdying這個是幹嗎用的;
以下代碼就能夠正常的解析了:瀏覽器

import socket
sock=socket.socket()
sock.bind(("127.0.0.1",8800))
sock.listen(5)

while 1:
    print("server waiting.......")
    conn,addr =sock.accept()
    data=conn.recv(1024)
    print(data)
    conn.send(b"HTTP/1.1 200 OK\r\n\r\n helllowearesutdy")
    conn.close()

image.png-31.6kB
如圖就正常請求成功了;緩存

import socket
sock=socket.socket()
sock.bind(("127.0.0.1",8800))
sock.listen(5)

while 1:
    print("server waiting.......")
    conn,addr =sock.accept()
    data=conn.recv(1024)
    print(data)
    conn.send(b"HTTP/1.1 200 OK\r\n\r\n<h1>helllowearesutdy<h1>")
    conn.close()

這個時候瀏覽器裏面打開127.0.0.1:8800,就能夠看到瀏覽器解析了HTML語言;
以上就是一個web應用請求;安全

HTTP協議:

HTTP協議簡介:

HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用於萬維網(WWW:World Wide Web )服務器與本地瀏覽器之間傳輸超文本的傳送協議。服務器

HTTP是一個屬於應用層的面向對象的協議,因爲其簡捷、快速的方式,適用於分佈式超媒體信息系統。它於1990年提出,通過幾年的使用與發展,獲得不斷地完善和擴展。網絡

HTTP協議工做於客戶端-服務端架構爲上。瀏覽器做爲HTTP客戶端經過URL向HTTP服務端即WEB服務器發送全部請求。Web服務器根據接收到的請求後,向客戶端發送響應信息。架構

HTTP協議的特色:

基於TCP/IP:

計算機與網絡設備要相互通訊,雙方就必須基於相同的方法。好比,如何探測到通訊目標、由哪一邊先發起通訊、使用哪一種語言進行通 信、怎樣結束通訊等規則都須要事先肯定。不一樣的硬件、操做系統之間 的通訊,全部的這一切都須要一種規則。而咱們就把這種規則稱爲協議(protocol)。協議中存在各式各樣的內容。從電纜的規格到IP地址的選定方法、 尋找異地用戶的方法、雙方創建通訊的順序,以及Web頁面顯示須要 處理的步驟,等等。像這樣把與互聯網相關聯的協議集合起來總稱爲TCP/IP。而http協議是基於TCP/IP協議之上的應用層協議。less

基於-響應模式:

HTTP協議規定,請求從客戶端發出,最後服務器端響應該請求並 返回。換句話說,確定是先從客戶端開始創建通訊的,服務器端在沒有 接收到請求以前不會發送響應。
image.png-105kB

無狀態保存的:

HTTP是一種不保存狀態,即無狀態(stateless)協議。HTTP協議 自身不對請求和響應之間的通訊狀態進行保存。也就是說在HTTP這個 級別,協議對於發送過的請求或響應都不作持久化處理。
image.png-117kB
使用HTTP協議,每當有新的請求發送時,就會有對應的新響應產 生。協議自己並不保留以前一切的請求或響應報文的信息。這是爲了更快地處理大量事務,確保協議的可伸縮性,而特地把HTTP協議設計成 如此簡單的。但是,隨着Web的不斷髮展,因無狀態而致使業務處理變得棘手 的狀況增多了。好比,用戶登陸到一家購物網站,即便他跳轉到該站的 其餘頁面後,也須要能繼續保持登陸狀態。針對這個實例,網站爲了能 夠掌握是誰送出的請求,須要保存用戶的狀態。HTTP/1.1雖然是無狀態協議,但爲了實現指望的保持狀態功能, 因而引入了Cookie技術。有了Cookie再用HTTP協議通訊,就能夠管 理狀態了。有關Cookie的詳細內容稍後講解。

無鏈接:

無鏈接的含義是限制每次鏈接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開鏈接。採用這種方式能夠節省傳輸時間。

http請求協議與響應協議

http協議包含由瀏覽器發送數據到服務器須要遵循的請求協議與服務器發送數據到瀏覽器須要遵循的請求協議。用於HTTP協議交互的信被爲HTTP報文。請求端(客戶端)的HTTP報文 作請求報文,響應端(服務器端)的 作響應報文。HTTP報文自己是由多行數據構成的文本。

image.png-125.7kB

請求協議:

請求格式:

image.png-91.7kB

請求方式:get和post請求:

  • GET提交的數據會放在URL以後,以?分割URL和傳輸數據,參數之間以&相連,如EditBook?name=test1&id=123456. POST方法是把提交的數據放在HTTP包的Body中.
  • GET提交的數據大小有限制(由於瀏覽器對URL的長度有限制),而POST方法提交的數據沒有限制.
  • GET與POST請求在服務端獲取請求數據方式不一樣。
  • GET方式提交數據,會帶來安全問題,好比一個登陸頁面,經過GET方式提交數據時,用戶名和密碼將出如今URL上,若是頁面能夠被緩存或者其餘人能夠訪問這臺機器,就能夠從歷史記錄得到該用戶的帳號和密碼.

響應協議:

image.png-97.9kB

響應狀態嗎:

狀態碼的職 是當客戶端向服務器端發送請求時, 返回的請求 結果。藉助狀態碼,用戶能夠知道服務器端是正常 理了請求,仍是出 現了 。
image.png-160.1kB
image.png-120.3kB

相關文章
相關標籤/搜索