3 回答
TA贡献1796条经验 获得超4个赞
从评论中的讨论来看,问题似乎与https
握手有关。
一个简单的解决方案是使用以下 URL 查询服务:
curl -H "Content-type:application/json" -X GET 'https://localhost:50051/testapp/v1/order' -v -k
使用-k
,您将忽略HTTPS
验证。
注意:我已将 URL 从更改http
为https
.
TA贡献1802条经验 获得超10个赞
从容器内部,您需要侦听所有接口,而不是 localhost 或环回接口。网络是在 docker 中命名的,因此您不仅可以获得一个新的私有 ip,还可以获得容器内部一个无法从外部访问的单独环回接口。为此,请更改:
http.ListenAndServe("localhost:50051", headersOk)
到:
http.ListenAndServe(":50051", headersOk)
TA贡献1779条经验 获得超6个赞
上提供的代码main.go不会启动 TLS,因此请停止使用 curl 来卷曲https,它将无法正常工作。卷曲http会起作用
package main
import (
"io"
"net/http"
"github.com/gorilla/handlers"
)
func main() {
http.HandleFunc("/testapp/v1/order", testHandler)
headersOk := handlers.AllowedHeaders([]string{""})
http.ListenAndServe(":50051", headersOk)
}
func testHandler(w http.ResponseWriter, r *http.Request) {
io.WriteString(w, "Heyyy!")
}
该命令openssl s_client https://localhost:50051/testapp/v1/order -connect localhost:50051向您确认您请求的端口上不存在 TLS
很多评论确认 usinghttps不相关,再次在您的代码上未激活 TLS
curl -H "Content-type:application/json" -X GET 'http://localhost:50051/testapp/v1/order'作品。再次确认 不使用 TLS
结论:
https当您的代码上未激活 TLS 时,不要尝试 curl
- 3 回答
- 0 关注
- 156 浏览
添加回答
举报