HTTP協議

1 簡介

HTTP(Hypertext Transfer Protocol)超文本傳輸協議,詳細的規定了萬維網服務器和客戶端之間傳輸數據的通信規則。php

HTTP是一個基於TCP/IP通訊協議來傳遞數據(HTML 文件, 圖片文件, 查詢結果等)。 html

2 HTTP請求

2.1 基本介紹

瀏覽器連上服務器後,向服務器請求某個web資源,稱之爲瀏覽器向服務器發送了一個HTTP請求。web

一個完整的HTTP請求包括以下內容:一個請求行、若干消息頭,以及實體內容。其中一些消息頭和實體內容都是可選的。瀏覽器

以test.php爲例:安全

<?php
echo '123';

image

2.2 請求行細節

請求行的細節主要體如今請求方式:GET和POST。除了GET和POST以外,還有HEAD、OPTIONS、DELETE、TRACE、PUT,可是使用到的基本就是GET和POST。服務器

GET和POST有哪些區別?post

  • GET請求的數據會跟在URL(統一資源定位)以後。POST提交把提交的數據放置在HTTP包的包體中。所以,GET提交的方式在地址欄中顯示出來,POST地址欄則不會改變。
  • 傳輸數據的大小:HTTP協議沒有對傳輸的數據大小進行限制,也沒有對URL長度進行限制。實際開發過程主要限制有:GET方式特定瀏覽器和服務器對URL長度有限制。IE大概2k,Chrome大概8k。而POST理論上沒有大小限制的,可是受服務器php.ini配置的影響(post_max_size)。
  • 安全性:相對而言,post提交,安全性最高。
  • 默認請求都是GET請求,超連接也是GET請求。

2.3 消息頭細節

2.3.1 基本介紹

消息頭主要是瀏覽器在請求服務器中,攜帶的瀏覽器信息。ui

那麼服務器如何接收瀏覽器傳遞過來的瀏覽器的消息呢?code

經過$_SREVER這個變量接收,瀏覽器傳遞的消息頭。htm

重點介紹一些經常使用的消息頭($_SERVER變量裏的鍵值):

HTTP_REFERER,用來得到該請求是從哪一個頁面過來的

SERVER_ADDR,服務器的IP地址,::1表示本地服務器

REMOTE_ADDR,請求我這臺服務器的客戶端的ip地址

DOCUMENT_ROOT,服務器文檔的跟目錄

SCRIPT_NAME,請求的腳本(文件)名稱

REQUEST_TIME,請求的時間

2.3.2 經典案例1:封殺某一段的IP

<?php
$remote = $_SERVER['REMOTE_ADDR'];
$banned = '192.168.1';
if(strpos($remote, $banned) !== false){
	// 說明找到了要禁止的網段
	echo '你已經列入訪問的黑名單,沒法訪問';
	exit();
}
echo '歡迎訪問';

2.3.3 經典案例2:防盜鏈

3 HTTP響應

所謂的響應,就是服務器給瀏覽器迴應的內容。

一個完整的HTTP響應包括3個部分:狀態行、消息頭、實體內容。

image

3.1 HTTP響應細節-狀態碼

HTTP響應的狀態碼有不少,可是最多見的就是以下幾個,須要重點掌握:

200:請求成功

404:not found,未找到這個資源

302:表示重定向

304:Not Modified,未修改

403:Forbidden,禁止訪問

500:服務器內部錯誤

相關文章
相關標籤/搜索