查看HTTP 1.1 RFC#GET瞭解GET請求是什麼。當您使用瀏覽器訪問網站時(所有網站都在某種HTTP服務器上運行),您的瀏覽器充當客戶端,網站充當服務器。客戶端啓動請求,服務器響應該請求。
請求的主要類型(由瀏覽器響應用戶試圖查看的URL發起)是GET請求。
例如,如果用戶想要訪問URL http://www.example.com/index.htm,瀏覽器會連接到服務器www.example.com的TCP端口80(默認情況下)。一旦連接成功,瀏覽器啓動的「對話」與標準的GET請求看起來像這樣的:
GET /index.htm HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; sv-SE; rv:1.8.1.12) Gecko/20080207 Ubuntu/7.10 (gutsy) Firefox/2.0.0.12
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
第一行(請求行)之後的任何頭是可選的,儘管任何瀏覽器總是希望以包含「主機」標題,因爲沒有它,大多數網站將無法工作(這允許多個網站共享一個IP地址)。在這種情況下,服務器無法知道您嘗試訪問的網站,而無需在此處指定主機名。
最低限度GET請求來獲取該服務器上的index.htm將僅僅是:
GET /index.htm HTTP/1.1
注意,請求結束是由一個雙CRLF序列終止(ASCII碼13和10) ,一個用於最近的標題行,另一個用於標記請求標題的結尾。一旦服務器收到雙CRLF序列,服務器就會響應相應的狀態行和代碼(找到該文檔?)。如果找到文檔,它通常會以HTTP狀態代碼200的響應形式返回,響應標頭(與請求標頭格式相同),雙CRLF序列,後跟所請求文件的正文。 HTTP標準稱這爲「實體」。在這種情況下,返回的實體將是index.htm的內容。使用上面的例子中,服務器可能會這樣回答:
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 66
Last-Modified: Wed, 14 Sep 2016 13:05:21 GMT
<html>
<body>
Welcome to my example page
</body>
</html>
所以這是一言以蔽之的HTTP GET /響應對話的一個簡單的例子,雖然你可以猜測,事情可能會變得更加複雜,這取決於請求和響應頭。
要回答您關於如何手動向正在運行的服務器發送GET請求的問題,我喜歡在Linux機器上使用「curl -i」。 Curl充當客戶端/瀏覽器,允許您指定要獲取(下載)的URL。例如:
-i選項將導致捲曲以顯示整個網絡服務器響應(包括HTTP響應報頭),而不是僅僅在這種情況下是TEST.HTM的內容的實體。只需要調整上面的URL以匹配正在運行的Web服務器的URL,無論它位於同一臺計算機上還是網絡上的其他位置。
爲什麼要從服務器發送*請求*?客戶端發送請求,並回復響應。 –
至於創建請求,只需讓你的本地瀏覽器做到這一點?或者使用像'curl'這樣的命令行工具? –
就像我說的我不知道我在做什麼,我不知道有關服務器的第一件事。客戶發送請求,我回復。我確定這個服務器已經有回覆。curl命令是什麼樣的? http://stackoverflow.com/questions/27422918/send-http-get-request-using-curl-in-c顯示一個。但是,我甚至不知道這是否有一個網址,如果它做到了 – TheMangaStand