go设置https访问

之前我们搭建过一个 ai服务器 : https://blog.csdn.net/daily886/article/details/96118130

现在在他基础上 修改为 https

需要用到的第三方包有:

go get github.com/unrolled/secure

修改文件 aichat/router/router.go ,router.go 内容如下:

package router

import (
	"log"
	"net/http"

	"github.com/gin-gonic/gin"
	"github.com/unrolled/secure"
	"github.com/spf13/viper"

	"aichat/service"
	"aichat/router/middleware"
)

//初始化路由
func InitRouter(g *gin.Engine){
	middlewares := []gin.HandlerFunc{}
	//中间件
	g.Use(gin.Recovery())
	g.Use(middleware.NoCache)
	g.Use(middleware.Options)
	g.Use(middleware.Secure)
	g.Use(middlewares...)

	rou := gin.Default()
	rou.Use(TlsHandler())

	//404处理
	g.NoRoute(func(c *gin.Context){
		c.String(http.StatusNotFound,"该路径不存在")
	})
	//健康检查中间件
	g.GET("/",service.Index)//主页
	g.GET("/chat",service.AiChat)//
}

//监听路由,手动访问https
func TlsHandler() gin.HandlerFunc {
	sslhost := "go.daily886.com:"+viper.GetString("common.server.addr")
	log.Println("sslhost:",sslhost)
	return func(c *gin.Context) {
		secureMiddleware := secure.New(secure.Options{
			SSLRedirect: true,
			SSLHost:     sslhost,
		})
		err := secureMiddleware.Process(c.Writer, c.Request)

		// If there was an error, do not continue.
		if err != nil {
			return
		}

		判断get访问 ,
		//这里的只能手动访问https, 如果要跳转,就要用http监听多另外一个端口,监听后跳到https就可以了
		//log.Println("c.Request.Method",c.Request.Method)
		//if c.Request.Method == "GET"{
		//	/*
		//	fmt.Println(c.Request.Proto)
		//	// output:HTTP/1.1
		//	fmt.Println(c.Request.TLS)
		//	// output: <nil>
		//	fmt.Println(c.Request.Host)
		//	// output: localhost:9090
		//	fmt.Println(c.Request.RequestURI)
		//	// output: /index?id=1
		//	*/
		//
		//	//判断是否https
		//	log.Println("c.Request.TLS",c.Request.TLS)
		//	if c.Request.TLS == nil { //不是https
		//		newurls := strings.Join([]string{"https://", c.Request.Host, c.Request.RequestURI}, "")
		//		log.Println("newurls",newurls)
		//		c.Redirect(http.StatusMovedPermanently,newurls) //重定向到https
		//	}
		//}

		c.Next()
	}
}

修改文件 aichat/main.go ,main.go 内容如下:

package main

import (
	"log"

	"github.com/gin-gonic/gin"
	"github.com/spf13/viper"

	"aichat/config"
	"aichat/router"
)

func main() {
	if err := config.Init();err != nil{
		panic(err)
	}
	//设置gin模式
	gin.SetMode(viper.GetString("common.server.runmode"))

	//创建一个gin引擎
	g := gin.New()

	router.InitRouter(g)
	log.Printf("开始监听服务器地址: %s\n", viper.GetString("common.server.url"))

	// Listen and Server in https://127.0.0.1:8080
	//err := g.Run(viper.GetString("common.server.addr")) //使用http
	err := g.RunTLS( //使用https
		viper.GetString("common.server.addr"),
		"/usr/local/orange/conf/cert/online/go.daily886.com.pem",
		"/usr/local/orange/conf/cert/online/go.daily886.com.key")
	if err != nil {
		log.Fatal("监听错误:", err)
	}


}

打包并运行

[root@izj6c4jirdug8kh3uo6rdez aichat]# go build
[root@izj6c4jirdug8kh3uo6rdez aichat]# ./aichat
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
 - using env:	export GIN_MODE=release
 - using code:	gin.SetMode(gin.ReleaseMode)

[GIN-debug] GET    /                         --> aichat/service.Index (6 handlers)
[GIN-debug] GET    /chat                     --> aichat/service.AiChat (6 handlers)
[GIN-debug] Listening and serving HTTPS on :6663

访问结果如下:

参考:https://www.jianshu.com/p/01057d2c37e4

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: 关于设置go-cqhttp token的问题,我可以提供以下回答:首先,你需要在酷Q机器人框架的配置文件中将HTTP API开启,然后在go-cqhttp的配置文件中,将access_token设置为你在酷Q机器人框架中设置的HTTP API的token值。具体设置步骤可以参考go-cqhttp的官方文档。 ### 回答2: go-cqhttp是一个用于在Go语言中连接和交互QQ的开源实现库。它使用token来进行身份验证和访问控制。以下是关于如何设置go-cqhttp的token的步骤: 1. 首先,确保已经安装好了Go语言环境和go-cqhttp。你可以在go-cqhttp的GitHub页面上找到安装说明。 2. 在你的项目中创建一个配置文件,例如config.yml,用于存储go-cqhttp的配置信息。 3. 在配置文件中添加以下内容,用来设置token: ```yaml # token设置 server: use_access_token: true access_token: "your_access_token_here" ``` 在access_token字段中,将"your_access_token_here"替换为你自己的访问令牌。 4. 保存配置文件并运行go-cqhttp。你可以在运行命令中指定配置文件的路径,例如: ```bash go-cqhttp -c /path/to/config.yml ``` 这样,go-cqhttp将使用设置的token进行访问控制。 请注意,为了保证安全性,你应该选择一个强密码来设置token,并确保不要泄露给他人。此外,你还可以在配置文件中进行其他设置,例如指定QQ号码、选择连接方式等等。 希望以上解答能够帮助到你! ### 回答3: go-cqhttp 是一个开源的基于 OneBot 标准的跨主流平台、可扩展、支持协议插件化的机器人框架。下面是关于 go-cqhttp token 设置的步骤: 1. 首先,在你的电脑上或服务器上下载并安装 go-cqhttp。可以从 go-cqhttp 的 Github Release 页面下载编译好的二进制文件,也可以从源代码进行编译安装。 2. 安装完成后,在 go-cqhttp 的根目录下会有一个 config.yml 文件,使用文本编辑器打开该文件。 3. 在 config.yml 文件中找到 token 字段,该字段用来设置机器人连接服务器的身份验证凭证。 4. 要设置 token,你可以前往 QQ 开放平台的应用管理页面(https://open.qq.com/)注册一个新的应用,然后获取到一个可用的 token。注意,你需要先拥有一个 QQ 帐号并登录到 QQ 开放平台。 5. 获取 token 后,将其复制到 config.yml 文件中的 token 字段中。 6. 保存并关闭 config.yml 文件。 7. 最后,启动 go-cqhttp,它将使用设置的 token 连接到 QQ 服务器并提供机器人功能。 请注意,go-cqhttp 还有其他配置项可供进一步自定义和调整。你可以在 config.yml 文件中探索这些选项,例如设置监听的端口、插件列表、协议类型等等。 希望以上回答对你有所帮助,如有疑问请随时追问。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值