作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在记录我的 Web 应用程序(在负载均衡器 + 防火墙后面)接收到的 HTTP header 时,我注意到我收到了 X-Original-For 和 X-Original-Proto header (除了传统的 X-Forwared-XXX header )。
他们的目的是什么?
最佳答案
简答:X-Original-*
表示在 HttpContext.Connection
中收到的原始 header 值和 HttpContext.Request
。
长版:使用时Nginx
/IIS
/Apache
设置反向代理,HttpContext.Connnection
和 HttpContext.Request
将更改为 X-Forwarded-*
中最左边的值 header ,X-Original-*
标题用于保存原始HttpContext.Connection
和 HttpContext.Request
值(value)观:
HttpContext.Request.Scheme
将保存为标题 X-Original-Proto: ...
,然后是 HttpContext.Request.Scheme
将更改为 X-Forwarded-Proto: o1, o2, ...
标题中最左侧的方案HttpContext.Request.Host
将保存为标题 X-Original-Host: <original-host>
,然后是 HttpContext.Request.Host
将更改为 X-Forwarded-Host: o1, o2, ...
标题中最左侧的主机HttpContext.Connection.RemoteIpAddress
和 HttpContext.Connection.RemotePort
将保存为标题 OriginalForHeaderName: <original-endpoint>
, 然后这个值会被改成X-Forwarded-For: o1, o2, ...
header中最左边的IP和port 参见 source code of saving X-Original-For
:
requestHeaders[_options.OriginalForHeaderName] = new IPEndPoint(connection.RemoteIpAddress, connection.RemotePort).ToString();
参见 source code of saving X-Original-Proto
:
requestHeaders[_options.OriginalProtoHeaderName] = request.Scheme;
参见 source code of saving X-Original-Host
:
requestHeaders[_options.OriginalHostHeaderName] = request.Host.ToString();
关于http - X-Original-For header : what's its purpose?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57759419/
我是一名优秀的程序员,十分优秀!