在.NET 6 Web API中如何获取请求的客户端主机名
问题解答
这是完全符合预期的行为。
HttpContext.Request.Host.Host获取的是请求目标的主机名,也就是你的Web API部署的服务器地址(比如例子里的api.api.com),它代表客户端请求要发送到的目标地址,而非发起请求的客户端所在主机名。如果想获取发起请求的客户端主机名,你需要读取请求头里的
Referer(注意拼写是Referer而非Referrer)或者Origin字段:Referer头会包含客户端发起请求的页面完整URL(比如https://example.example.com/page),你可以从中解析出主机名部分Origin头会包含客户端所在的源(比如https://example.example.com),直接就是带协议的主机名
需要注意的是:
- 这两个请求头都不是客户端必须发送的,部分场景下(比如直接通过工具发起请求、隐私模式下)可能会缺失
- 如果你的API和客户端之间有反向代理、CDN等中间层,需要确保这些中间层正确转发原始请求头,否则你拿到的会是中间层的地址
内容的提问来源于stack exchange,提问作者humleflue
相关产品推荐
相关产品推荐

