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

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

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

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

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

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

請求響應(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)證機制的實現(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)
    }
}

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

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《golang的HTTP基本認(rèn)證機制實例詳解》,本文關(guān)鍵詞  golang,的,HTTP,基本,認(rèn)證,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《golang的HTTP基本認(rèn)證機制實例詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于golang的HTTP基本認(rèn)證機制實例詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 芦山县| 扎赉特旗| 安徽省| 沙坪坝区| 南投市| 岳西县| 安达市| 大同市| 会东县| 左权县| 阳泉市| 清涧县| 富蕴县| 高陵县| 邯郸县| 山东| 太和县| 中方县| 长泰县| 临沂市| 阿合奇县| 界首市| 兖州市| 台湾省| 固原市| 西丰县| 中超| 库尔勒市| 祥云县| 枣阳市| 永修县| 华池县| 松潘县| 扬中市| 女性| 漠河县| 兴国县| 安陆市| 邹城市| 巴中市| 宁乡县|