Go语言 http 中的 request.Host 和 request.URL.Host 的区别
2023-09-11 14:19:00 时间
golang 中的例子
http 代码:
http.ListenAndServe("localhost:9999", nil)
使用 curl 命令访问:curl http://localhost:9999/_geecache/scores/Tom
则:
- r.Host 是 localhost:9999,
- r.URL.Host 是空字符串,
- r.URL.Path 是 /_geecache/scores/Tom。
定义
r.URL 字段是通过解析 HTTP 请求 URI 创建的。
r.Host 字段是主机请求标头的值。它与调用 r.Header.Get("Host") 的值相同。
如果网上的HTTP请求是:
GET /pub/WWW/TheProject.html HTTP/1.1
Host: www.example.org:8080
则:r.URL.Host 是空字符串,
r.Host 是 www.example.org:8080。
解释
r.URL.Host 和 r.Host的值几乎总是不同的。在代理服务器上,r.URL.Host 是目标服务器的主机,r.Host 是代理服务器本身的主机。当不通过代理连接时,客户端不会在请求 URI 中指定主机。在这种情况下,r.URL.Host 是空字符串。
如果未实现代理,则应使用r.Host确定主机。
相关文章
- Go 多文件编程,包
- Go语言容器(container)
- Go 了解函数运用
- Go程序设计语言2.1 名称
- Go程序设计语言2.6 包和文件
- Go: go module
- Go: reflect
- go import导入的理解
- CSDN日报191118:Python 编程实用技巧;Go开发 之 Go的 9个 基本命令
- Golang go-redis cluster模式下不断创建新连接,效率下降问题解决
- Go分布式爬虫学习笔记(十一)
- ubutnu配置Go开发环境
- Go语言开发小技巧&易错点100例(四)
- 从0开始,用Go语言搭建一个简单的后端业务系统
- 03、GO语言变量定义、函数
- Go Web:Handler
- Go基础系列:读取标准输入
- Go基础系列:struct的导出和暴露问题
- GO语言练习:第一个Go语言工程--排序
- GO语言练习:实现最简单的http helloword 服务器
- GO语言练习:struct基础练习
- GO基础--01
- Pokémon Go下载过度致服务器崩溃 国际扩张暂停
- Go语言实现HashSet
- GO语言基础之struct
- GO语言基础语法