Go开发服务器中Host和Scheme为空
在Go中,利用开发服务器处理HTTP请求时,经常会遇到http.Request.URL 的 Host 和 Scheme 属性的问题空白。
原因:
直接访问开发服务器(不使用 HTTP 代理)时,通常会以相对格式发出请求:
GET / Host: localhost:8080
在这种情况下,Go HTTP 请求解析器会将 URL 解释为相对 URL,导致 Host 和 Scheme 为空properties.
访问 HTTP 主机:
要从请求中检索 HTTP 主机,请访问 http.Request 结构体的 Host 属性,如以下代码所示:
host := r.Host // Returns the host (e.g., "localhost:8080")
确定 URL类型:
要确定 URL 是绝对还是相对,请利用 URL 结构体的 IsAbs() 方法:
isAbsoluteURL := r.URL.IsAbs() // Returns true if the URL is absolute, false otherwise
Netcat 示例:
要测试行为,请使用以下内容创建 HTTP 请求文件内容:
GET / HTTP/1.1 Host: localhost:8080
并执行以下命令:
cat my-http-request-file | nc localhost 8080
以上是为什么Go的开发服务器HTTP请求中Host和Scheme为空?的详细内容。更多信息请关注PHP中文网其他相关文章!