基於 TCP/IP 通訊協議獲取網絡資源 ( html, css ... ).php
http 協議 ( Hyper Text Transfer Protocol 超文本傳輸協議 ) 用於從萬維網 ( www ) 中傳輸超文本到本機瀏覽器的傳送協議, 互聯網的基礎協議.css
1、 客戶端 ( user-agent ) :html
一般由瀏覽器來扮演, 也能夠是應用程序, 爬蟲等.web
瀏覽器發送一個請求到 web 服務器獲取 html 文檔, 解析文檔中的資源信息再發送其它請求獲取到 css 樣式或腳本進行頁面渲染, 以及一些其它的資源 ( 圖片或視頻 ... ), 瀏覽器最後會整合資源顯示.數據庫
2、 web 服務端跨域
負責接收處理請求 ( requests ), 返回響應 ( response ) 所請求的文檔.瀏覽器
它能夠是負載平衡 ( 負載均衡 ) 的一組服務組成的計算機集羣, 也能夠是某個複雜的軟件, 經過向其它計算機 ( 如緩存, 數據庫服務器, 電子商務服務器 ) 發起請求獲取資源.緩存
負載平衡 ( 負載均衡 ): 經過多個計算機、網絡鏈接、CPU、磁盤驅動器或其它資源中分配負載, 以達到最優化的資源使用、最大化的吞吐率、最小化的響應時間、同時避免過載的目的, 經常使用於解決高併發和高可用問題.安全
Server 不必定是機器, 但機器上能夠有多個 Server, 在 http/1.1 和 Host 頭部能夠共享一個 IP 地址.服務器
3、 代理 ( Proxies )
處於瀏覽器和服務器之間, 大都在傳輸層上 ( 即應用層 ), 主要有以下幾種做用 :
4、 特性
5、 請求方法
get :請求獲取指定資源
post : 想指定資源提交數據進行處理請求 ( 如提交表單或上傳文件 ... ), 有可能會建立新的資源或修改已有資源
get 受 url 長度限制, 並非 http 協議規範限制的, 而是瀏覽器和服務器限制的
post 理論上無長度限制, 出於安全考慮, 服務器會在實現時作一些限制
put : 只對已在的指定資源總體更新
patch` : 用於資源部分更新, 當資源不存在時, 會建立一個新的資源
delete : 刪除指定資源
connect : http/1.1 協議中將鏈接改成管道方式的代理服務器, 一般用於 SSL 加密服務器的連接與非加密的 http 代理服務器的通訊
head : 用於查看服務器性能, 只獲取響應頭信息, 不會返回內容部分 ( 響應主體 )
trace : 用於 http 請求的測試或診斷, 返回服務器收到的請求
options : 用於查看服務器性能, 測試服務器功能是否正常, 請求服務器返回該資源所支持的全部 http 請求方法 .
JavaScript XMLHttpRequest 對象進行 CORS 跨域資源共享時, 用此方法發送嗅探請求, 以判斷是否有對目的資源訪問權限
6、 狀態碼
7、 Cookie
保存在本地的服務器數據, 會在下次請求攜帶上訪問服務器, 一般用於告知服務器兩個請求是否源於同一瀏覽器, 如保持登陸狀態 ( http 是無狀態的 )
// 設置 Cookie setcookie('cookie[name]', 'value'); // 刷新輸出 Cookie if (isset($_COOKIE['cookie'])) { // isset 檢測變量是否已設置而且非 NULL foreach ($_COOKIE['cookie'] as $name => $value) { $name = htmlspecialchars($name); // htmlspecialchars 將特殊字符轉 html 實體 $value = htmlspecialchars($value); echo "$name : $value <br>"; } }
主要應用
缺點
分類
過時時間的設定只與客戶端相關 : Set-Cookie: id=a3fWa; Expires=Wed, 25 Dec 2018 08:20:00 GMT;
注意 : 有些瀏覽器有會話恢復功能, 即便瀏覽器關閉了, 會話期 Cookie 也會保存着