为了账号安全,请及时绑定邮箱和手机立即绑定

REST HTTPS 服务器出错

REST HTTPS 服务器出错

Go
潇潇雨雨 2021-06-29 14:43:56
我正在尝试在 Golang 中创建一个带有 TLS 的 REST 服务器,但该程序不起作用:http.Handle("/", gorest.Handle())err = http.ListenAndServeTLS(":443", "cert.pem", "key.pem", nil)如果我用非 root 用户运行它,我会得到listen tcp 127.0.0.1:443: permission denied. 以 root 用户运行它不会显示之前的消息,但在调用 ListenAndServeTLS 时会阻止执行。使用的操作系统是 Linux x86_64。有任何想法吗?
查看完整描述

1 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

权限

端口 <= 1024 是特权端口。除非您是 root 或拥有使用它们的明确许可,否则您不能使用它们。请参阅此答案以获取解释或维基百科或您更信任的内容。

请参阅此答案以获取允许您的应用程序打开这些端口而不授予它们超级用户权限的解决方案(这是一个坏主意)。金钱报价:

sudo setcap 'cap_net_bind_service=+ep' /opt/yourGoBinary

阻塞

ListenAndServe和它的 TLS 对应ListeAndServeTLS是阻塞的。

返回的 http 处理程序gorest.Handle()/被访问时并发执行。如果您希望其他代码同时运行,请在运行ListeAndServe 或实现不同的 http 处理程序之前启动一个 goroutine 。

使用 goroutine 的示例:

func printStuff() {

    time.Sleep(1 * time.Second)

    fmt.Println("foo")

}


func main() {

    go printSTuff()

    log.Fatal(http.ListeAndServe(":80"))

}


查看完整回答
反对 回复 2021-07-05
  • 1 回答
  • 0 关注
  • 186 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信