a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > Golang > 正文

golang的HTTP基本認證機制實例詳解

2020-04-01 19:10:44
字體:
來源:轉載
供稿:網友

本文實例講述了golang的HTTP基本認證機制。分享給大家供大家參考,具體如下:

看了<<http權威指南>>第12章HTTP基本認證機制,感覺講的蠻詳細的,寫了一個小小例子測試.

請求響應過程:

復制代碼 代碼如下:
==>
GET /hello HTTP/1.1
Host: 127.0.0.1:12345
<==
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Dotcoo User Login"
==>
GET /hello HTTP/1.1
Host: 127.0.0.1:12345
Authorization: Basic YWRtaW46YWRtaW5wd2Q=
<==
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8

 

golang HTTP基本認證機制的實現

復制代碼 代碼如下:
package main
import (
    "fmt"
    "io"
    "net/http"
    "log"
    "encoding/base64"
    "strings"
)
// hello world, the web server
func HelloServer(w http.ResponseWriter, req *http.Request) {
    auth := req.Header.Get("Authorization")
    if auth == "" {
        w.Header().Set("WWW-Authenticate", `Basic realm="Dotcoo User Login"`)
        w.WriteHeader(http.StatusUnauthorized)
        return
    }
    fmt.Println(auth)
    auths := strings.SplitN(auth, " ", 2)
    if len(auths) != 2 {
        fmt.Println("error")
        return
    }
    authMethod := auths[0]
    authB64 := auths[1]
    switch authMethod {
    case "Basic":
        authstr, err := base64.StdEncoding.DecodeString(authB64)
        if err != nil {
            fmt.Println(err)
            io.WriteString(w, "Unauthorized!/n")
            return
        }
        fmt.Println(string(authstr))
        userPwd := strings.SplitN(string(authstr), ":", 2)
        if len(userPwd) != 2 {
            fmt.Println("error")
            return
        }
        username := userPwd[0]
        password := userPwd[1]
        fmt.Println("Username:", username)
        fmt.Println("Password:", password)
        fmt.Println()
    default:
        fmt.Println("error")
        return
    }
    io.WriteString(w, "hello, world!/n")
}
func main() {
    http.HandleFunc("/hello", HelloServer)
    err := http.ListenAndServe(":12345", nil)
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }
}

 

希望本文所述對大家Go語言程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 免费在线a | 91福利在线导航 | 国产偷v国产偷v亚洲 | 国产精品久久久久蜜臀 | 狠狠久久伊人中文字幕 | 黄色大片视频 | 国产欧美一区二区精品性色 | 欧美精品免费在线 | 欧美视频三区 | 一级全黄少妇性色生活片毛片 | 中文欧美日韩 | 久久精品亚洲精品 | 美女一区二区三区在线观看 | 一区二区三区在线播放 | 国产999精品久久久久久 | 国产欧美精品一区二区三区四区 | 麻豆资源 | 狠狠久久婷婷 | 国产一区二区三区免费 | 91豆花视频 | 爱爱视频在线免费观看 | av成人在线观看 | 欧美日韩毛片 | 免费中文字幕日韩欧美 | 欧美色图第一页 | 青青草精品 | 久草视频新 | 嫩草视频在线播放 | 亚洲国产欧美在线 | 国产高清不卡一区 | 草的我好爽 | 国产高清视频在线观看 | 99精品网 | 色网站在线免费观看 | 国产精品视频一区二区三区 | 在线观看视频一区 | 亚洲天堂免费 | 91久久综合亚洲鲁鲁五月天 | 午夜精品久久久久久久男人的天堂 | 亚洲成人精品网 | 久草网址|