超文本傳輸協(xié)議(英文:HyperText Transfer Protocol,縮寫:HTTP)是一種用于分布式、協(xié)作式和超媒體信息系統(tǒng)的應用層協(xié)議。
就是常用的瀏覽器和服務器通信協(xié)議. 將tcp進行封裝后的一種應用層協(xié)議.
HTTP協(xié)議定義Web客戶端如何從Web服務器請求Web頁面,以及服務器如何把Web頁面?zhèn)魉徒o客戶端。HTTP協(xié)議采用了請求/響應模型。客戶端向服務器發(fā)送一個請求報文,請求報文包含請求的方法、URL、協(xié)議版本、請求頭部和請求數(shù)據(jù)。服務器以一個狀態(tài)行作為響應,響應的內容包括協(xié)議的版本、成功或者錯誤代碼、服務器信息、響應頭部和響應數(shù)據(jù)。
以下是 HTTP 請求/響應的步驟:
例如:在瀏覽器地址欄鍵入URL,按下回車之后會經(jīng)歷以下流程:
HTTP/1.1協(xié)議中共定義了八種方法來以不同方式操作指定的資源:
GET
向指定的資源發(fā)出“顯示”請求。使用GET方法應該只用在讀取數(shù)據(jù),而不應當被用于產(chǎn)生“副作用”的操作中,例如在Web Application中。其中一個原因是GET可能會被網(wǎng)絡蜘蛛等隨意訪問。
HEAD
與GET方法一樣,都是向服務器發(fā)出指定資源的請求。只不過服務器將不傳回資源的本文部分。它的好處在于,使用這個方法可以在不必傳輸全部內容的情況下,就可以獲取其中“關于該資源的信息”(元信息或稱元數(shù)據(jù))。
POST
向指定資源提交數(shù)據(jù),請求服務器進行處理(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請求本文中。這個請求可能會創(chuàng)建新的資源或修改現(xiàn)有資源,或二者皆有。
PUT
向指定資源位置上傳其最新內容。
DELETE
請求服務器刪除Request-URI所標識的資源。
TRACE
回顯服務器收到的請求,主要用于測試或診斷。
OPTIONS
這個方法可使服務器傳回該資源所支持的所有HTTP請求方法。用’*'來代替資源名稱,向Web服務器發(fā)送OPTIONS請求,可以測試服務器功能是否正常運作。
CONNECT
HTTP/1.1協(xié)議中預留給能夠將連接改為管道方式的代理服務器。通常用于SSL加密服務器的鏈接(經(jīng)由非加密的HTTP代理服務器)。
路由是處理url和函數(shù)關系的程序,配置一系列的url訪問規(guī)則,提供對應url訪問的模板.在go的原生net/http包中,瀏覽器發(fā)起http請求(post,get等請求),到服務器中,服務器根據(jù)發(fā)送的url查找對應的出來程序,此查找程序為路程轉發(fā)程序.
所有HTTP響應的第一行都是狀態(tài)行,依次是當前HTTP版本號,3位數(shù)字組成的狀態(tài)代碼,以及描述狀態(tài)的短語,彼此由空格分隔。
狀態(tài)代碼的第一個數(shù)字代表當前響應的類型:
有些是已經(jīng)定義好的,比如200, 404等常見狀態(tài)碼,開發(fā)者也可以自行定義.
package main
import (
"fmt"
"net/http"
)
func IndexHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "hello world")
}
func main() {
http.HandleFunc("/", IndexHandler)
http.ListenAndServe("127.0.0.0:8000", nil)
}
123456789101112131415
上述代碼中分析請求格式如下圖所示:
可以看到上圖,請求頭,響應頭,請求方法為GET, 響應狀態(tài)碼為200.
Content-Type: 傳輸?shù)拿襟w類型.
Content-Length: HTTP消息長度.
等字段內容龐大,后續(xù)專門開一貼介紹.
一個簡單的登錄頁面,用戶登錄時填寫的賬號密碼從數(shù)據(jù)庫中讀出,并做對比
index.html: 主頁顯示內容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
歡迎訪問golang搭建的HttpServer
</body>
</html>
12345678910
login.html: 登錄頁面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用戶登錄</title>
</head>
<body>
<form action="/loginForm" method="post">
<span>{{.}}</span>
username:<input type="text" name="username"/><br/>
password:<input type="password" name="password"/><br/>
<input type="submit" value="登錄"/>
<input type="reset" value="重置"/>
</form>
</body>
</html>
12345678910111213141516
success.html: 登錄成功頁面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首頁</title>
</head>
<body>
歡迎訪問golang搭建的HttpServer
</body>
</html>
12345678910
main.go: 服務器主程序
森林導航:http://www.xsldh6.com/
NiceTool.net 好工具網(wǎng):http://www.nicetool.net/
品|開源中國
文|御坂弟弟
TypeScript 官方宣布,其網(wǎng)站采用了一個新的主頁,以更好地向用戶介紹 TypeScript。
文中,官方表示以前的主頁存在諸多問題,比如網(wǎng)站頂部沒有明顯的號召性用語、使用了太多解釋概念的文字、網(wǎng)站各個部分之間視覺重量同以至于缺乏重點、沒有足夠的代碼示例。最后,其對網(wǎng)站用戶進行了 A/B 測試,看看是否有新用戶喜歡主頁,但結果基本是各占一半。因此新主頁進行了以下改動:
減少頁面上的文本量,并且每個部分現(xiàn)在都有加粗的關鍵信息。
將調色板限制為來自 TypeScript 徽標的藍色以及白色和黑色的陰影。
創(chuàng)建一個中間導航點,以方便用戶在文檔、編輯器或教程之間跳轉。
用頁面末尾的跳轉點替換頁腳內容,使用相同的鏈接,但調整了設計以適應頁腳。
開始關注開發(fā)人員使用 TypeScript 的體驗。
與之前的主頁一樣,新主頁通過了定期可訪問性審核,可以在禁用 JavaScript 的情況下使用,并且可以完全通過鍵盤進行導航。感興趣的用戶可以前往體驗。
*請認真填寫需求信息,我們會在24小時內與您取得聯(lián)系。