婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫 > golang的HTTP基本認(rèn)證機(jī)制實(shí)例詳解

golang的HTTP基本認(rèn)證機(jī)制實(shí)例詳解

熱門標(biāo)簽:騰訊外呼系統(tǒng)價(jià)格 ?兓? 成都呼叫中心外呼系統(tǒng)平臺(tái) 谷歌便利店地圖標(biāo)注 電銷機(jī)器人可以補(bǔ)救房產(chǎn)中介嗎 電梯外呼訪客系統(tǒng) 浙江人工智能外呼管理系統(tǒng) 最短的地圖標(biāo)注 百度地圖標(biāo)注搜索關(guān)鍵詞

本文實(shí)例講述了golang的HTTP基本認(rèn)證機(jī)制。分享給大家供大家參考,具體如下:

看了http權(quán)威指南>>第12章HTTP基本認(rèn)證機(jī)制(本站下載地址:https://www.jb51.net/books/93254.html),感覺講的蠻詳細(xì)的,寫了一個(gè)小小例子測(cè)試.

請(qǐng)求響應(yīng)過程:

復(fù)制代碼 代碼如下:
==>
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基本認(rèn)證機(jī)制的實(shí)現(xiàn)

復(fù)制代碼 代碼如下:
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)
    }
}

希望本文所述對(duì)大家Go語言程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • golang實(shí)現(xiàn)http服務(wù)器處理靜態(tài)文件示例
  • 淺談golang的http cookie用法
  • golang編程入門之http請(qǐng)求天氣實(shí)例
  • golang設(shè)置http response響應(yīng)頭與填坑記錄
  • Go語言通過http抓取網(wǎng)頁的方法
  • go語言實(shí)現(xiàn)一個(gè)最簡(jiǎn)單的http文件服務(wù)器實(shí)例
  • Go語言中利用http發(fā)起Get和Post請(qǐng)求的方法示例
  • go語言實(shí)現(xiàn)簡(jiǎn)單http服務(wù)的方法
  • Go語言的http/2服務(wù)器功能及客戶端使用

標(biāo)簽:宜昌 眉山 盤錦 紹興 邢臺(tái) 雅安 上海 七臺(tái)河

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《golang的HTTP基本認(rèn)證機(jī)制實(shí)例詳解》,本文關(guān)鍵詞  golang,的,HTTP,基本,認(rèn)證,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《golang的HTTP基本認(rèn)證機(jī)制實(shí)例詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于golang的HTTP基本認(rèn)證機(jī)制實(shí)例詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 六盘水市| 当涂县| 夹江县| 县级市| 乳源| 武义县| 府谷县| 和静县| 台南县| 凤庆县| 浦城县| 偏关县| 昭平县| 文安县| 收藏| 昌黎县| 马公市| 寿光市| 新民市| 天津市| 威信县| 河东区| 勃利县| 碌曲县| 揭东县| 巢湖市| 威远县| 北票市| 新河县| 天峻县| 乌拉特前旗| 荔浦县| 开江县| 贡山| 大埔县| 福贡县| 东阿县| 崇义县| 焉耆| 克山县| 抚顺县|