没有端口的 HTTP X 转发主机行为

2023-12-06

我发现X-Forwarded-Host对于端口而言,HTTP 标头没有很好地定义。也许这就是为什么不同的实现在涉及这个标头时表现不同的原因。通常,此标头可以包含端口,例如b.com:123这很简单。但如果真的发生了怎么办NOT包含端口并且服务器在非默认端口上运行?经过我的小研究,我发现一些实现引入了“非官方”X-Forwarded-Port标头。

现在,我正在考虑在服务器上实现,我的想法是,如果X-Forwarded-Host标头存在但没有端口,则输出 URL 应该not即使服务器运行在与默认端口不同的端口上,也包含一个端口(如果X-Forwarded-Port标头不存在)。

当情况变得更糟时X-Forwarded-Proto标头存在。

我创建了一个简单的表来描述我期望服务器的行为方式,我的问题是:

你会同样实施吗?声明的行为对您来说直观吗?提前致谢。

| # |       Request        | X-F...-Proto | X-F...-Host | X-F...-Port |      Output URL      |
|:-:|:---------------------|:------------:|:-----------:|:-----------:|:---------------------|
| 1 | http://a.com:8080/x  |     -no-     |     -no-    |    -no-     | http://a.com:8080/x  |
| 2 | http://a.com:8080/x  |    https     |     -no-    |    -no-     | https://a.com:8080/x |
| 3 | http://a.com:8080/x  |     -no-     |    b.com    |    -no-     | http://b.com/x       |
| 4 | http://a.com:8080/x  |     -no-     |  b.com:123  |    -no-     | http://b.com:123/x   |
| 5 | http://a.com:8080/x  |     -no-     |     -no-    |     123     | http://a.com:123/x   |
| 6 | http://a.com:8080/x  |     -no-     |    b.com    |     123     | http://b.com:123/x   |
| 7 | http://a.com:8080/x  |     -no-     |  b.com:123  |    -no-     | http://b.com:123/x   |
| 8 | http://a.com:8080/x  |     -no-     |  b.com:123  |     456     | http://b.com:456/x   |
| 9 | http://a.com:8080/x  |    https     |    b.com    |    -no-     | https://b.com/x      |
|10 | http://a.com:8080/x  |    https     |    b.com    |     123     | https://b.com:123/x  |
|11 | xyzz://a.com:8080/x  |     -no-     |    b.com    |    -no-     | xyzz://b.com:8080/x  |

注意我认为最棘手的#3 和#9。


由于到目前为止还没有答案,我询问了我们公司负责基础设施和网络服务器的一些人,他们同意建议的解决方案(表)是正确的。以便:

  • X-Forwarded-Host无端口装置使用协议默认值(80, 443)

如果有人对代码(Java)感兴趣=这里是拉取请求(公关)至Gravitee.ioAPI 管理平台修复了从使用应用程序默认端口 (8083) 到协议默认端口 (80、443) 的行为,并添加了对X-Forwarded-Port.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

没有端口的 HTTP X 转发主机行为 的相关文章

  • 自定义 HTTP 标头:命名约定

    我们的一些用户要求我们将与其帐户相关的数据包含在HTTP 标头我们向他们发送的请求 甚至是他们从我们的 API 获得的响应 添加自定义 HTTP 标头的一般约定是什么 naming format etc 另外 请随意发布您在网络上偶然发现的
  • 为什么我的 Github 托管网站响应 HTTP 302 而不是 200?

    我拥有该域名penkov id au http penkov id au 我主持一个blog http michael penkov id au blog 2014 01 02 reinventing the wheel html usin
  • Apache 未发送 304 响应(如果启用了 mod_deflate 和 AddOutputFilterByType)

    我在 Apache httpd conf 中添加了以下行 AddOutputFilterByType DEFLATE text html text css application javascript application x javas
  • 如何将文件透明地传输到浏览器?

    受控环境 IE8 IIS 7 ColdFusion 当从 IE 发出指向媒体文件 例如 mp3 mpeg 等 的 GET 请求时 浏览器将启动关联的应用程序 Window Media Player 我猜测 IIS 提供文件的方式允许应用程序
  • 如何记录进入 IIS 的 HTTP 请求

    我在我的开发机器上运行 IIS 5 我有一个 asp net 3 5 Web 服务在其上运行 我从同一服务器上运行的不同 Web 应用程序调用该服务 我的服务返回错误 500 内部服务器错误 我正在对其进行故障排除 我的请求是通过Syste
  • 在 HTTP 标头中发送 UTF-8 值会导致 Mojibake

    我想使用 servlet 发送阿拉伯语数据HTTPServletResponse给客户 我正在尝试这个 response setCharacterEncoding UTF 8 response setHeader Info arabicWo
  • android httprequest java.net.UnknownHostException

    我想用android发出http请求 是使用这个 void testHTTP HttpClient httpClient new DefaultHttpClient HttpUriRequest request new HttpPost h
  • 如何查看点击 HTML 按钮时发出的 POST 请求的地址?

    我正在创建一个涉及网络抓取和网络自动化的项目 我想首先提交此表格 http rgsntl rgs cuhk edu hk rws prd applx2 Public tt dsp timetable aspx http rgsntl rgs
  • ASP.NET HTTP 请求是否会转换为 1 个线程?

    可以安全地假设当用户通过 HTTP 请求 aspx 页面时 ASP NET 至少为其创建 1 个线程吗 如果是这样 持续多久 如果 1000 人向同一个 aspx 页面发出 HTTP 请求 是否会涉及一些线程回收 因此不会产生不同的 100
  • 如何使用 Java 以正确的编码检索 HTML 页面?

    如何使用页面编码中的 HTML 页面读取 HTTP 流 这是我用来获取 HTTP 流的代码片段 输入流读取器有编码可选参数 但我不知道如何获取它 URLConnection conn url openConnection InputStre
  • 如何设置响应文件名而不强制“另存为”对话框

    我在某些响应中返回一个流 设置适当的content type标头 我正在寻找的行为是这样的 如果浏览器能够呈现给定内容类型的内容 那么它应该将其显示在浏览器窗口中 如果浏览器不知道如何呈现内容 那么它应该显示 另存为 对话框 其中文件名应该
  • 使用 JSON 的 Pentaho HTTP Post

    我是 Pentaho 的新手 我正在尝试执行以下工作流程 从数据库中读取一堆行 做一些转换 将它们以 JSON 格式发布到 REST Web 服务 我已经使用输入步骤和 Json 输出步骤解决了前两个问题 但是 我在执行最后一步时遇到两个问
  • 如何在c++中使用libcurl发送POST请求并接收它?

    我正在使用 c libcurl 向网页发送 POST 请求 但我正在努力测试它 使用的代码是 include
  • 为什么我在将数据上传到数据库时不断看到“正在重置断开的连接”?

    我正在通过 REST API 将数亿个项目从 Heroku 上的云服务器上传到 AWS EC2 中的数据库 我正在使用 Python 并且经常在日志中看到以下 INFO 日志消息 requests packages urllib3 conn
  • ASP.NET - 将所有 https 请求重写为 http

    我的问题正是所提出的问题here https stackoverflow com questions 16276860 iis 7 adding ssl to one site all other sites responds to htt
  • Response.Redirect 并不总是重定向

    我们在一个工作不一致的页面上有一个简单的 Response Redirect IIS 6 0 大多数情况下 它会正确重定向 但我们收到一些用户抱怨 他们没有重定向 而是看到 302 对象移至此处 页面 该页面显示标题信息以及正确的位置 如果
  • Java Junit 测试 HTTP POST 请求

    我需要测试以下方法而不改变方法本身 该方法向服务器发出 POST 方法 但我需要制作一个独立于服务器的测试用例 在将其重定向到本地文件之前 我测试了类似的方法 但为此我将协议指定为文件 主机名指定为 localhost 端口指定为 1 我的
  • 如何向 node-http-proxy 响应添加标头

    我需要在第三方服务上解决CORS 所以我想构建一个代理来添加标头 Access Control Allow Origin 为什么这段代码没有添加标题 httpProxy require http proxy var URL https th
  • 在防火墙后面使用 GitHub,无需 SSH 访问

    我真的很想使用 GitHub 但我的公司一切都被锁定了 现在 我只能通过HTTP协议使用Tortoise SVN 我可以以同样的方式使用 GitHub 吗 如果是这样 怎么办 我认为你一直能够克隆github https github co
  • Java 中的下载管理器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要通过 FTP HTTP 从 Java 获取几个大文件 几个演出 有现成的库 java 命令行工具

随机推荐

  • 如何使用带有参数列表的 django-filter 包?

    我想用以下方法过滤我的模型Django 过滤器 如果我按一个 id 进行过滤 效果很好 例如 http localhost 8000 accommodations accommodationType id 1 但我不知道如何通过多个 id
  • 在 WooCommerce 中选择变体销售价格后显示折扣百分比

    我下面的代码显示了用户选择变体后选择的变体价格 add filter woocommerce show variation price filter show variation price 10 3 function filter sho
  • 我收到此消息“错误:未找到 FFmpeg/avconv!”

    我正在尝试创建一个不和谐的机器人 但是每次我尝试运行 YouTube 链接时都会收到此错误 Error FFmpeg avconv not found at Function getInfo C Users discord bot node
  • PowerShell 如何获取函数或 cmdlet 的引用?

    我想获得对函数或 cmdlet 的引用 例如 我想引用 Get ChildItem cmdlet 我不想调用它 我想要对该函数的引用 然后我可以将其传递给另一个函数 有语法可以做到这一点吗 我知道我可以使用字符串 Get ChildItem
  • TableView 中的滚动委托

    我想制作一个像这样的链接的动画 这是我的简单截图 就我而言 我希望当我向上滑动时 蓝色标题视图将消失 导航栏将更改为蓝色 这是我的代码 import UIKit class ViewController UIViewController U
  • 读取/解析文本文件输入C++

    一点背景知识 我正在为一个学校项目开发一个滑块拼图 这是我们第一次使用 C 而不是 Java 这是我第一次必须实现从文件中读取数据的功能 我有一个关于从文本文件读取输入的简单问题 我了解如何逐行读取文件并将每一行保存在字符串中 我想知道在读
  • 为什么不能将供应商特定的伪元素/类组合到一个规则集中?

    在 CSS 中可以设置样式placeholder使用特定于供应商的伪类和伪元素的组合来输入输入中的文本 以获得最佳的跨浏览器覆盖率 这些都共享相同的基本属性 即 文本样式和颜色声明 然而 虽然我不可避免地想要应用相同的样式 而不管浏览器供应
  • Android 可绘制,背景和渐变位于左侧

    W 希望有一个drawable左边有背景和渐变 大约是10dp wide 我想要实现的目标的图片 左侧红色渐变 其余部分的背景 我怎样才能做到这一点 我试过了layer list有两种形状但没有运气 项目背景
  • Python:在随机段落中查找最长/最短的句子?

    我使用的是 Python 2 7 需要 2 个函数来查找最长和最短句子 按字数计算 随机段落 例如 如果我选择放入这一段 将您的海滨度假之旅与北加州詹纳葡萄酒之乡的红葡萄酒和白葡萄酒搭配起来 这座位于索诺玛县的沿海小城市坐落在俄罗斯河河口附
  • 使 chrome 中的复选框看起来像 IE 中的复选框

    IE 和 Chrome 中的复选框看起来不同 Chrome IE 从上面的图片中您可以看到差异 我希望 chrome 中的复选框看起来与 IE 中的一样 I tried webkit box shadow和其他类似的 css 属性 但没有运
  • UISegmentedcontrol 外观导致问题

    我需要有关 UISegment 外观的帮助 我在我的应用程序委托中设置了它 一切正常 直到我添加此代码来更改我选择的段颜色 它才引起问题 我在 viewDidLoad 时调用了 IBAction 它应该显示这个 但它显示了这一点 我知道是外
  • TCP服务器IP地址

    当启动H2 tcp服务器并且主机有多个IP地址时 我如何定义服务器将绑定以侦听连接的IP 我们可以定义 tcp 端口 但似乎没有办法定义 ip 地址 谢谢你 奥斯卡 http www h2database com html advanced
  • QueryOver:从子查询中选择列

    如何从不同表的子查询中选择 投影值到我的主查询中 我有一个像这样的 NH 模型 Serializable public class MyModel public virtual int Id get set more mapped valu
  • 在 sed 中查找并替换文本文件中的多个字符串[重复]

    这个问题在这里已经有答案了 下面是一个玩具文本文件 其中包含样本和特征信息以及测量值 Sample3 trait1 8 5 Sample6 trait2 2 2 Sample7 trait1 9 2 Sample3 trait2 1 3 S
  • 向空手道框架添加自定义步骤定义

    我需要提取从 复杂 响应标头解析的字段 并在稍后的测试中使用该值 看来空手道中的 header 关键字是为了设置请求头而设置的 而不是解析响应头 有没有办法添加自定义步骤定义来维护对场景变量存储的访问 看来变量存储在StepDefs类 并且
  • 从小写转换为大写

    我正在尝试从小写转换为大写 我知道这很容易做到 SUB AL 20H 但我得到了另一种解决方案 AND AL 0DFH 请帮助我理解这一点 谢谢 查看位模式 答 0x41 0100 0001 一个 0x61 0110 0001 中号 0x4
  • 如何在 Three.js 中获取蒙皮网格顶点的全局位置?

    在 Three js 中 我们现在能够获取 a 顶点的全局位置不带皮的网格感谢这个问题 但是我怎样才能获得 a 顶点的全局位置skinned与骨骼和变形目标进行网格划分 例如 如何打印 2 5 1 5 0 5 在以下情况下 mesh geo
  • 注意:如果您发送了值,则被调用的函数应该是付费的,并且您发送的值应该小于您当前的余额

    我正在尝试使用 openzeppelin 的 ERC20 实现 但出现错误 tokenAddress 是现有 ERC20 代币的地址 例如 USDC 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 im
  • 在 PIL 中使用 TIFF G4 图像

    我编写了一个纯 python TIFF G4 解压缩以供使用tifffile py 我知道有一些方法可以添加libtiff自定义 PIL 但我永远无法让它在混合 virtualenv 中很好地工作 我想在PIL中操作图像 我正在寻找将我的减
  • 没有端口的 HTTP X 转发主机行为

    我发现X Forwarded Host对于端口而言 HTTP 标头没有很好地定义 也许这就是为什么不同的实现在涉及这个标头时表现不同的原因 通常 此标头可以包含端口 例如b com 123这很简单 但如果真的发生了怎么办NOT包含端口并且服