在开发Go应用程序的初始阶段,使用“hello, world”代码来熟悉框架是很重要的常见的。但是,当尝试从请求 URL 访问 Host 和 Scheme 属性时,您可能会遇到意外的空白值。为什么会发生这种情况?
Go 的 HTTP 库解析请求中的原始 URL。当您使用相对路径访问服务器时,例如:
GET / HTTP/1.1 Host: localhost:8080
URL 对象中的 Host 和 Scheme 字段保持为空。
相反,当从代理访问服务器时,使用这样的绝对 URL:
GET http://localhost:8080/ HTTP/1.1 Host: localhost:8080
这会导致这些字段的正确填充。
要获取HTTP 主机,请考虑直接使用 http.Request 结构体的 Host 属性。
此外,您可以通过检查 IsAbs() 方法来确定 URL 的类型(相对或绝对):
isAbsoluteURL := r.URL.IsAbs()
此检查可以帮助区分这两种情况并相应地指导您的代码逻辑。
以上是为什么我的Go开发服务器的请求URL中Host和Scheme属性为空?的详细内容。更多信息请关注PHP中文网其他相关文章!