http協議、全站https

一、http協議

 1、為何要學http協議?
    用戶用瀏覽器訪問網頁,默認走的都是http協議,所以要深入研究web層,必須掌握http協議
        
2、什么是http協議
    1、全稱Hyper Text Transfer Protocol(超文本傳輸協議)

             ###   一個請求得到一個響應包
        
        普通文本:文件內存放的是一些人類認識的文字符號(漢字、英語、阿拉伯數字)
        超級文本:除了普通文本內容之外,還有視頻、圖片、語音、超鏈接
            超文本包含:html文件、css、js、圖片、視頻、語音

            http協議都能傳輸上述內容,所以說http協議是專用于傳輸超文本的協議
            
    2、http主要用于B/S架構
    
    3、http是基tcp協議
        強調:基于http協議發包之前,必須先建立tcp協議的雙向通路

            


http協議的發展史

 
    網景瀏覽器(萬能客戶端)------》各種各樣的服務端
        
    http0.9
        請求方法:只支持GET方法
        請求頭:不支持    
        響應信息:只支持純文本,不支持圖片   

    
        無連接/短連接/非持久連接:利用完tcp連接之后會立即回收,所以無連接指的不是說沒有連接,而是說沒有持久連接/長連接
               http協議通信,先建立tcp連接,然后客戶端發請求包,服務端收到后發送響應包,服務端一旦發送完響應包之后,服務端會立即主動斷開tcp連接,下次http通信還需要重新建立tcp連接
            
        無狀態:(一個http協議的請求無法標識自己的身份)
                        http無法保存狀態,比如登錄狀態----登錄之后再次發送的請求無法識別身份
                                    
        總結:(0.9的時代,下面兩個問題都不是問題)
            無連接/短連接/非持久連接---->引發的問題
                同一個用戶在短期內訪問多次服務端,那大量的時候都會消耗在重復創建tcp連接上       
               在高并發場景下,對服務端是非常大的消耗,客戶端的訪問速度也會非常的慢
                
            無狀態:一個http協議的請求無法標識自己的身份---》引發的問題
                如果是登錄狀態的話,http協議無法保存,那意味著每次請求都需要重新輸出一次賬號                    密碼來認證
     
    http1.0
        請求方法:支持GET(查)、POST(改)、DELETE(刪)、PUT(增)
        請求頭:支持                
        響應信息:支持超文本        
        支持緩存
                        
        無連接/短連接/非持久連接
            問題:
                同一個用戶在短期內訪問多次服務端,那大量的時候都會消耗在重復創建tcp連接上
                在高并發場景下,對服務端是非常大的消耗,客戶端的訪問速度也會非常的慢
            目標:
                同一個用戶在短期內訪問多次服務端,不要重復建立tcp連接,而是能夠共用一個tcp鏈接
            
            解決方案:支持持久連接/長連接 keep-alive
                前提:
                    發送完http響應包之后,服務端立即斷tcp連接,這是服務端的默認行為
                    要改變這種默認行為,要客戶端通知服務端才行           
                實現:
                    客戶端在發送http的請求時,需要再請求頭里帶上connection: keep-alive這個參數
                    服務端的keepalive_timeout設置要大于0                    
                    服務端收到后讀取該參數,服務端會保持與這一個客戶端tcp連接一段時間,響應時也會響應頭里放connection: keep-alive這個參數                                        
                    該tcp會保持一段時間 直到達到服務端設置的keepalive_timeout時間
            
            補充:
                在http1.0協議例還需要你發請求時你自己加上connection: keep-alive這個參數
                在http1.1協議里所有的請求都會自動加上connection: keep-alive,也就是說在http1.1客戶端默認就開啟了長連接支持
                配套的服務端也要開啟(服務端的keepalive_timeout設置要大于0,等于0相當于關掉)

                                                     ----如果用的是nginx  修改/etc/nginx/nginx.conf 

 http1.1(主要)
        1、默認所有請求都啟用長連接,對應服務端需要設置keepalive_timeout大于0
        
        2、Pipelining(請求流水線化/管道化)-----可以連續發送多個請求,但響應也必須按照順序來
                
        3、分塊傳輸編碼chunked----不使用分塊傳輸:先告知規定大小,當數據包大小到達指定值后就能知道到這里一個包的內容就結束了

                                                      使用分塊傳輸:允許服務器在不知道全部響應大小的情況,(比如由數據庫動態產生的數據)通過多個小"塊"的形式逐步發送HTTP響應給客戶端的技術。除非使用了分塊編碼Transfer-Encoding: chunked,否則響應頭首部必須使用Content-Length首部
    
    http2.0(未來)

http協議的格式

 
儲備知識:什么是URI、URL
    URI:統一資源標識符         

             # Web上可用的每種資源如HTML文檔、圖像、視頻片段、程序等都是一個來URI來定位的
    
    URL:統一資源定位服務,是uri的一種具體實現
        http://192.168.71.10:8080/a/b/1.txt?x=1&y=2&page=10#_label5
                
        所有部分:
            http://                         協議部分
                不寫協議,默認http協議
            192.168.71.10:8080  ip+port部分
                不寫端口默認服務端的端口是80            
            /a/b/1.txt                    路徑部分
                不寫路徑,默認加一個/結尾            
            ?x=1&y=2&page=10 請求參數部分      通常用于get請求                            
            #_label5                    錨  直接跳轉到頁面的某個部分
                                
        一個url地址的路徑部分也稱之為uri路徑
                            
    URN:也是uri的一種具體實現          例如:mailto:java-net@java.sun.com。

請求request
    包含四部分:
        請求首行
            GET /a.txt HTTP/1.1
            請求方法   請求的路徑部分及后續部分  使用http協議版本     

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/78285.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/78285.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/78285.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用 Logstash 遷移 MongoDB 數據到 Easysearch

大家好!在前面的文章中,我們已經詳細介紹了如何通過 Logstash 和 Canal 工具實現 MySQL 數據向 Easysearch 的遷移。如果您正在使用 MongoDB 作為數據存儲,并希望將其數據遷移到 Easysearch 中,這篇指南或許能為您提供一些幫助。 …

亞馬遜英國站FBA費用重構:輕小商品迎紅利期,跨境賣家如何搶占先機?

一、政策背景:成本優化成平臺與賣家共同訴求 2024年4月,亞馬遜英國站(Amazon.co.uk)發布近三年來力度最大的FBA費用調整方案,標志著英國電商市場正式進入精細化成本管理時代。這一決策背后,是多重因素的疊…

使用Qt Quick Controls創建自定義日歷組件

目錄 引言相關閱讀1. DayOfWeekRow2. MonthGrid3. WeekNumberColumn 項目結構及實現工程結構圖代碼實現及解析1. 組件封裝2. 主界面實現 運行效果 總結下載鏈接 引言 Qt6 Quick框架提供了一套豐富的日歷相關組件,包括 MonthGrid、DayOfWeekRow 和 WeekNumberColumn…

【AI微信小程序開發】大轉盤小程序項目代碼:自設轉盤選項和概率(含完整前端+后端代碼)

系列文章目錄 【AI微信小程序開發】AI減脂菜譜小程序項目代碼:根據用戶身高/體重等信息定制菜譜(含完整前端+后端代碼)【AI微信小程序開發】AI菜譜推薦小程序項目代碼:根據剩余食材智能生成菜譜(含完整前端+后端代碼)【AI微信小程序開發】圖片工具小程序項目代碼:圖片壓…

redis相關問題整理

Redis 支持多種數據類型: 字符串 示例:存儲用戶信息 // 假設我們使用 redis-plus-plus 客戶端庫 auto redis Redis("tcp://127.0.0.1:6379"); redis.set("user:1000", "{name: John Doe, email: john.doeexample.com}"…

Vue-組件的懶加載,按需加載

在Vue項目中實現組件的懶加載(也稱為按需加載或代碼分割),可以大大提升應用的加載速度和性能。懶加載主要通過Webpack的代碼分割功能實現,特別是使用動態導入(import()語法)。 為什么要使用懶加載&#xf…

C# new Bitmap(32043, 32043, PixelFormat.Format32bppArgb)報錯:參數無效,如何將圖像分塊化處理?

C#處理非常大的圖像(如 32043x32043 像素)時,確實需要采取分塊化處理的方法來避免內存不足的問題。分塊化處理可以將大圖像分割成多個較小的塊,分別進行處理和保存,最后再合并這些塊以形成完整的圖像。以下是一個詳細的…

如何使用極狐GitLab 的外部狀態檢查功能?

極狐GitLab 是 GitLab 在中國的發行版,關于中文參考文檔和資料有: 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 外部狀態檢查 (ULTIMATE ALL) pending 狀態引入于極狐GitLab 16.5 pending 狀態檢查的超時時間為兩分鐘引入于極狐GitLab 16…

深入探索Spark-Streaming:從Kafka數據源創建DStream

在大數據處理領域,Spark-Streaming是一個強大的實時流處理框架,而Kafka作為高性能的分布式消息隊列,二者結合能實現高效的數據處理。今天就來聊聊Spark-Streaming中從Kafka數據源創建DStream的相關知識。 早期,Spark-Streaming通過…

Kafka 詳解

1.基本概念:Kafka 是分布式發布 - 訂閱消息系統,具有高吞吐量、可擴展性等優勢,支持點對點和發布訂閱兩種消息模式,涉及 Broker、Topic、Partition 等多種角色。 2.安裝步驟:需先安裝 JDK 和 Zookeeper,下…

uniapp-商城-34-shop 購物車 選好了 進行訂單確認整體

在shop頁面選中商品添加到購物車&#xff0c;可選好后&#xff0c;進行確認和支付。具體呈現在shop頁面。 1 購物車欄 shop頁面代碼&#xff1a; 購物車代碼&#xff1a; 代碼&#xff1a; <template><view><view class"carlayout"><!-- 車里…

數據倉庫是什么?數據倉庫架構有哪些?

目錄 數據倉庫是什么&#xff1f;數據倉庫架構有哪些&#xff1f; 一、數據倉庫是什么&#xff1f; 二、數據倉庫的架構分層 1. 獲取層 2. 數據層 3. 應用層 4. 訪問層 三、數據倉庫的價值體現 1.決策支持 2.業務優化 3.提升競爭力 四、數據倉庫的未來發展趨勢 總…

單片機——使用printf調試

配置printf()輸出函數 1、來自于<stdio.h> 2、運行C語言時&#xff0c;輸出到終端 3、單片機沒有終端&#xff0c;需要使用串口&#xff0c;將要輸出的內容傳到電腦&#xff08;串口調試助手&#xff09;上 例子如下 #include <stdio.h> #include &qu…

人臉識別考勤系統實現教程:基于Face-Recognition、OpenCV與SQLite

引言 隨著人工智能技術的飛速發展&#xff0c;人臉識別技術已廣泛應用于安防、金融、教育等多個領域。本文將帶領大家利用Python的face-recognition庫、OpenCV和SQLite數據庫&#xff0c;從零開始構建一個具備異常報警功能的人臉識別考勤系統。該系統能夠實時檢測視頻流中的人…

親測成功???Linux下編譯opencv-4.10.0(靜態鏈接庫和動態鏈接庫)

1. 安裝依賴 在編譯之前&#xff0c;確保系統中安裝了必要的依賴工具和庫。運行以下命令安裝&#xff1a; sudo apt update sudo apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config sudo apt-get install libavcodec-dev libavforma…

windows 部署Prometheus+Node-expoter

Prometheus v3.2.1 離線部署方式 通過helm部署prometheus會自動部署Node-expoter只需要添加prometheus的抓取規則&#xff01;&#xff01; 刪除&#xff1a; 清除之前安裝的 Prometheus 如果你之前已經安裝了 Prometheus&#xff0c;需要清除原有的 Prometheus 安裝&#xf…

HTMLCSS實現網頁輪播圖

網頁中輪播圖區域的實現與解析 在現代網頁設計中&#xff0c;輪播圖是一種常見且實用的元素&#xff0c;能夠在有限的空間內展示多個內容&#xff0c;吸引用戶的注意力。下面將對上述代碼中輪播圖區域的實現方式進行詳細介紹。 一、HTML 結構 <div class"carousel-c…

Linux:進程的概念

基本概念 課本概念&#xff1a;程序的一個可執行實例&#xff0c;正在執行的程序。 內核觀點&#xff1a;擔當分配系統資源實體。 當操作系統要執行程序時&#xff0c;也就是說操作系統要執行代碼&#xff0c;但一個操作系統需要執行多個程序&#xff0c;而CPU只有一塊&#xf…

前端基礎之《Vue(10)—過濾器》

一、過濾器 1、作用 用于數據處理。 2、全局過濾器 使用Vue.filter(名稱, val>{return newVal})定義。 在任何組件中都可以直接使用。 3、局部過濾器 使用選項&#xff0c;filters: {}定義&#xff0c;只能在當前組件中使用。 4、過濾器在Vue 3.0中已經淘汰了 5、過濾器…

平板電腦做歐盟網絡安全法案(EU)2022/30

平板電腦做歐盟網絡安全法案&#xff08;EU&#xff09;2022/30 平板電腦做EN18031,平板電腦做無障礙法規EU2019/882 歐盟委員會于2022年通過補充授權法案 &#xff08;EU&#xff09; 2022/30&#xff0c;明確要求無線電設備需滿足網絡安全、隱私保護及反欺詐要求。 新規時間軸…