【问题标题】:Error with REST HTTPS ServerREST HTTPS 服务器出错
【发布时间】:2013-10-09 17:57:59
【问题描述】:

我正在尝试在 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。有什么想法吗?

【问题讨论】:

    标签: go


    【解决方案1】:

    权限

    端口 this answer 以获得解释或wikipedia 或其他内容 你更信任。

    请参阅this answer 以获得允许您的应用程序打开这些端口的解决方案,而无需 给他们超级用户权限(这是一个坏主意)。金钱报价:

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

    阻止

    ListenAndServe 和它的 TLS 对应 ListeAndServeTLS 正在阻塞。

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

    使用 goroutine 的示例:

    func printStuff() {
        time.Sleep(1 * time.Second)
        fmt.Println("foo")
    }
    
    func main() {
        go printSTuff()
        log.Fatal(http.ListeAndServe(":80"))
    }
    

    【讨论】:

    • 感谢您的帮助,现在很清楚了,我以为是认证或类似问题。
    • 我想(并希望)错误看起来会有所不同:)
    猜你喜欢
    • 2017-02-20
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多