Lui*_*reu 7 http kestrel-http-server asp.net-core
在记录我的 Web 应用程序接收到的 HTTP 标头(它是负载均衡器+friewall)时,我注意到我收到了 X-Original-For 和 X-Original-Proto 标头(除了传统的 X -Forwarded-XXX 标头)。
他们的目的是什么?
谢谢。
简答:X-Original-*代表在和 中收到的原始标头值。HttpContext.ConnectionHttpContext.Request
长的版本:当使用Nginx/ IIS/Apache设置一个反向代理中,HttpContext.Connnection和HttpContext.Request将被改变,以在最左边的值X-Forwarded-*报头,X-Original-*报头被用来保存原始HttpContext.Connection和HttpContext.Request值:
HttpContext.Request.Scheme会被保存为 header X-Original-Proto: ...,然后HttpContext.Request.Scheme将更改为 header 中最左边的方案X-Forwarded-Proto: o1, o2, ...HttpContext.Request.Host将保存为 header X-Original-Host: <original-host>,然后HttpContext.Request.Host将更改为 header 中最左边的主机X-Forwarded-Host: o1, o2, ...HttpContext.Connection.RemoteIpAddress和HttpContext.Connection.RemotePort将被保存为 header OriginalForHeaderName: <original-endpoint>,然后这个值将被更改为 header of header 中最左边的 IP 和端口X-Forwarded-For: o1, o2, ...requestHeaders[_options.OriginalForHeaderName] = new IPEndPoint(connection.RemoteIpAddress, connection.RemotePort).ToString();
Run Code Online (Sandbox Code Playgroud)
requestHeaders[_options.OriginalProtoHeaderName] = request.Scheme;
Run Code Online (Sandbox Code Playgroud)
requestHeaders[_options.OriginalHostHeaderName] = request.Host.ToString();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3440 次 |
| 最近记录: |