Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
超文本傳輸協議(英文:HyperText Transfer Protocol,縮寫:HTTP)是一種用于分布式、協作式和超媒體信息系統的應用層協議。
就是常用的瀏覽器和服務器通信協議. 將tcp進行封裝后的一種應用層協議.
HTTP協議定義Web客戶端如何從Web服務器請求Web頁面,以及服務器如何把Web頁面傳送給客戶端。HTTP協議采用了請求/響應模型??蛻舳讼蚍掌靼l送一個請求報文,請求報文包含請求的方法、URL、協議版本、請求頭部和請求數據。服務器以一個狀態行作為響應,響應的內容包括協議的版本、成功或者錯誤代碼、服務器信息、響應頭部和響應數據。
以下是 HTTP 請求/響應的步驟:
例如:在瀏覽器地址欄鍵入URL,按下回車之后會經歷以下流程:
HTTP/1.1協議中共定義了八種方法來以不同方式操作指定的資源:
GET
向指定的資源發出“顯示”請求。使用GET方法應該只用在讀取數據,而不應當被用于產生“副作用”的操作中,例如在Web Application中。其中一個原因是GET可能會被網絡蜘蛛等隨意訪問。
HEAD
與GET方法一樣,都是向服務器發出指定資源的請求。只不過服務器將不傳回資源的本文部分。它的好處在于,使用這個方法可以在不必傳輸全部內容的情況下,就可以獲取其中“關于該資源的信息”(元信息或稱元數據)。
POST
向指定資源提交數據,請求服務器進行處理(例如提交表單或者上傳文件)。數據被包含在請求本文中。這個請求可能會創建新的資源或修改現有資源,或二者皆有。
PUT
向指定資源位置上傳其最新內容。
DELETE
請求服務器刪除Request-URI所標識的資源。
TRACE
回顯服務器收到的請求,主要用于測試或診斷。
OPTIONS
這個方法可使服務器傳回該資源所支持的所有HTTP請求方法。用’*'來代替資源名稱,向Web服務器發送OPTIONS請求,可以測試服務器功能是否正常運作。
CONNECT
HTTP/1.1協議中預留給能夠將連接改為管道方式的代理服務器。通常用于SSL加密服務器的鏈接(經由非加密的HTTP代理服務器)。
路由是處理url和函數關系的程序,配置一系列的url訪問規則,提供對應url訪問的模板.在go的原生net/http包中,瀏覽器發起http請求(post,get等請求),到服務器中,服務器根據發送的url查找對應的出來程序,此查找程序為路程轉發程序.
所有HTTP響應的第一行都是狀態行,依次是當前HTTP版本號,3位數字組成的狀態代碼,以及描述狀態的短語,彼此由空格分隔。
狀態代碼的第一個數字代表當前響應的類型:
有些是已經定義好的,比如200, 404等常見狀態碼,開發者也可以自行定義.
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, 響應狀態碼為200.
Content-Type: 傳輸的媒體類型.
Content-Length: HTTP消息長度.
等字段內容龐大,后續專門開一貼介紹.
一個簡單的登錄頁面,用戶登錄時填寫的賬號密碼從數據庫中讀出,并做對比
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 好工具網:http://www.nicetool.net/
品|開源中國
文|御坂弟弟
TypeScript 官方宣布,其網站采用了一個新的主頁,以更好地向用戶介紹 TypeScript。
文中,官方表示以前的主頁存在諸多問題,比如網站頂部沒有明顯的號召性用語、使用了太多解釋概念的文字、網站各個部分之間視覺重量同以至于缺乏重點、沒有足夠的代碼示例。最后,其對網站用戶進行了 A/B 測試,看看是否有新用戶喜歡主頁,但結果基本是各占一半。因此新主頁進行了以下改動:
減少頁面上的文本量,并且每個部分現在都有加粗的關鍵信息。
將調色板限制為來自 TypeScript 徽標的藍色以及白色和黑色的陰影。
創建一個中間導航點,以方便用戶在文檔、編輯器或教程之間跳轉。
用頁面末尾的跳轉點替換頁腳內容,使用相同的鏈接,但調整了設計以適應頁腳。
開始關注開發人員使用 TypeScript 的體驗。
與之前的主頁一樣,新主頁通過了定期可訪問性審核,可以在禁用 JavaScript 的情況下使用,并且可以完全通過鍵盤進行導航。感興趣的用戶可以前往體驗。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。