關於http協議

定義:html

Http協議(HyperTextTransferProtoco):超文本傳輸協議(無狀態協議),http協議是一個基於瀏覽器和服務器(B/S)請求和應答的應用層協議,http構建在TCP之上。web

http的無狀態是指服務器在處理完事務以後不會記錄以前的記錄,每一次的請求都須要創建一次鏈接。解決這種辦法可使用cookie或session記錄信息。服務器默認的端口是80端口json

基本http協議的流程:(一次http操做稱爲一個事務)跨域

 

一、客戶機與服務器創建鏈接(每一個請求都要創建一個鏈接)瀏覽器

  點擊某個http超連接緩存

 

二、發送請求信息安全

  請求報文包括三部分:服務器

    1)請求行(request-line)cookie

    • 包括URL
    • 請求的方法:get、POST、head、put、delete、options、trace、connect
    • http版本信息

     如:get/http://www.baidu.com/s?username=a&pwd=b HTTP/1.1session

      

    2)請求頭部(headers 由鍵值對組成):

    • user-agent(瀏覽器信息)
    • accept(能夠接收的數據類型,如html、json、text、xml等,若是是「*/*」則表示是沒有限制)
    • host(主機名或域名)
    • Accept-Encoding(可接收的編碼壓縮格式,如:gzip,deflate)
    • Accept-Language(能夠接收的天然語言,如中文等)
    • Connect(鏈接方式,如:keep-alive或close)
    • cookie
    • referer(URL,記錄請求以前的頁面的地址)

    

    3)請求數據(request-body):header和body之間有空格

    • get:則請求的數據直接包含在URL中,可是最多能夠識別1024個字符
    • POST:數據保存在請求內容中,各個字符之間也用&來鏈接,適用於表單請求

 

三、發送響應信息

  響應報文包括三部分:

    1)狀態行(status-line):

    • http版本信息
    • 狀態碼:
      • 200 OK:成功
      • 304 Not Modified:服務器只會返回狀態碼,但不會返回資源
      • 403 forbidden:禁止訪問 服務器收到了請求,可是拒絕提供服務
      • 404 Not Found:請求的資源不存在,如:錯誤的URL或斷網
      • 500 Internet server error:服務器發生錯誤
      • 503 service  unavailable:服務器目前不能處理請求(維護中或過載),可能過一段時間能夠
      • 504  gateway timeout:網關超時
      • 505 http  version not supported:對當前的http版本不支持
    • 狀態碼含義(英文表示)

    如:http/1.1 200 OK

    

    2)響應頭部(headers):

    • Content-type:能夠接受的數據格式(如json、text)和編碼
    • Content-encoding:能夠接受的壓縮格式(如gzip)
    • Date:當前的時間
    • set-cookie:設置cookie
    • Connection:鏈接方式(keep-alive/close)
    • Server:服務器名稱
    • Cache-control:用於指定全部緩存機制在整個請求/響應鏈中必須服從的指令。private是默認的,此外還有public、no-cache、no-store、max-age=XXX等
      • max-age:表示當訪問此網頁後的 x 秒內再次訪問不會去服務器;
      • no-cache,實際上Cache-Control: no-cache是會被緩存的,只不過每次在向客戶端(瀏覽器)提供響應數據時,緩存都要向服務器評估緩存響應的有效性;
      • no-store,這個纔是響應不被緩存的意思;

響應的頭部如:

 

    3)響應數據(response-body):

     返回響應後的數據,與header中間有一行空格

 

四、關閉鏈接

   客戶端接收服務器返回的信息,經過瀏覽器顯示在屏幕上(若是整個傳輸的過程當中某個步驟出現了錯誤,產生的錯誤會自動發送到客戶端),關閉鏈接

 

http和https的區別

  

  •   http是明文傳輸,HTTPS是加密傳輸
  •   https比http更加安全,須要用到SSL證書
  •   http的端口號是80,HTTPS的端口號是443

 

請求方法:get和POST的不一樣

在客戶端和服務器之間進行請求響應時,最經常使用到的就是POST和get。

「增刪改查」----put、delete、post、get

POST:向指定資源提交要申請的數據

get:從指定的資源請求數據

通常在瀏覽器中輸入一個網址訪問網站用的是get請求,而使用表單提交的時候能夠設置method方法爲get或POST,默認使用get,推薦使用post。

get不會修改信息,不會再服務器上產生任何結果。而POST可能會修改服務器上的信息。

形式上,get請求:請求的數據會附在URL的後面,用「?」來分隔URL和數據,用「&」鏈接數據中間不能有空格。POST請求:請求的數據放在body中,也是用「&」鏈接 

傳輸數據的大小,在實際的http規範中,沒有對URL作限定,可是有的瀏覽器會對URL作限定,因此使用get請求時,請求的數據會受到URL的影響。而POST不會受到影響。

安全性,POST的安全性比get高,get請求的數據在URL中,因此能夠看到不安全,POST看不見請求的數據

編碼類型,get只支持ASCII字符,POST均可以

session和cookie

會話(session)是跟蹤web程序經常使用的技術,用來跟蹤用戶的整個會話過程。經常使用的會話跟蹤技術是cookie和session。cookie是在客戶端肯定用戶身份(保存在客戶端瀏覽器中),而session是在服務器端肯定用戶身份(保存在服務器中)。

cookie

cookie是用來解決http協議無狀態(每一次請求都要從新創建一次鏈接)的不足,原理就是客戶端向服務器發出了請求,這時服務器想要記錄用戶狀態信息,就會在response設置cookie,,當瀏覽器下次發出請求的時候,在request時就會帶上cookie。服務器經過檢查從cookie就能夠確認用戶狀態了。

cookie須要瀏覽器的支持,若是瀏覽器不支持或者用戶在瀏覽器中設置了禁用cookie,就不能使用cookie了

cookie具備不可跨域名性,也不能夠跨子域名

cookie不支持修改和刪除操做,若想要修改cookie只須要從新設置cookie來覆蓋原來的信息便可。cookie有有效期,在有效期事後就會自動刪除

由於http協議是不安全的,因此在使用cookie的時候可使用secure設置爲true,意味着只有當瀏覽器是HTTPS的時候纔可使用cookie

session:

session保存在服務器的內存中,這樣能夠獲取高效的存取速度,session保存用戶第一次登錄時的記錄,隨後在用戶每一次的訪問中更新最後訪問的信息,這樣爲防止內存溢出,就將長時間沒有活躍的cookie刪除掉。

session須要使用cookie做爲標誌,也能夠將session的id寫入URL中

 

cookie 和session 的區別:

一、cookie數據存放在客戶的瀏覽器上,session數據放在服務器上。

二、cookie不是很安全,別人能夠分析存放在本地的COOKIE並進行COOKIE欺騙
   考慮到安全應當使用session。

三、session會在必定時間內保存在服務器上。當訪問增多,會比較佔用你服務器的性能
   考慮到減輕服務器性能方面,應當使用COOKIE。

四、單個cookie保存的數據不能超過4K,不少瀏覽器都限制一個站點最多保存20個cookie。

五、因此我的建議:   將登錄信息等重要信息存放爲SESSION   其餘信息若是須要保留,能夠放在COOKIE中

相關文章
相關標籤/搜索