Go使用https

一、服务端

1. 生成私钥和证书

以上两个步骤,参考:Go http2 和 h2c

2. 代码

go 复制代码
package main

import (
    "log"
    "net/http"
    "time"
    "golang.org/x/net/http2"
)

const idleTimeout = 5 * time.Minute
const activeTimeout = 10 * time.Minute

func main() {
    var srv http.Server
    //http2.VerboseLogs = true
    srv.Addr = ":8080"
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte("hello http2"))
    })
    http2.ConfigureServer(&srv, &http2.Server{})
    go func() {
        log.Fatal(srv.ListenAndServeTLS("server.crt", "server.key"))
    }()
    select {}
}

二、客户端

三、浏览器

1、开启了h2的网站

为了方便介绍后面的检测h2的插件和检测有没有开h2的方法,这边给出了几个已经开启了h2的一些网站地址

2、检测插件

  • HTTP/2 and SPDY indicator

当访问开启h2的网站

3、检测方法

方法一、HTTP/2 and SPDY indicator插件

方法二、谷歌浏览器:

  • Console
    • window.chrome.loadTimes()
    • window.chrome.loadTimes().connectionInfo
    • window.chrome.loadTimes().npnNegotiatedProtocol

开启了http1.1的网站

开启了http2.0的网站

四、参考资料

相关推荐
AlfredZhao2 天前
生产环境里,为什么不建议把普通端口直接暴露到公网?
linux·https·443·80
Avan_菜菜7 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
LDR00613 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术13 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园13 天前
C++20 Modules 模块详解
java·开发语言·spring
swordbob13 天前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
源分享13 天前
Java线程同步的多种实现方法(非常详细)
java·开发语言·jvm
Luminous.13 天前
C语言--day30
c语言·开发语言
何以解忧,唯有..13 天前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
謓泽13 天前
C语言不是语法,是通往机器的地图。
c语言·开发语言