问题标签 [x-forwarded-for]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
amazon-web-services - AWS ELB 使用 X-Forwarded-For 作为客户端 IP 记录到 S3
我们有一个 DDoS 层 (Project Shield),它将公共请求转发到我们的 AWS 应用程序负载均衡器 (ALB)。我们的 ALB 已启用访问日志记录(到 S3 存储桶)。除了设置存储桶、设置权限和启用此功能之外,我还没有找到很多配置选项。
似乎 ALB 日志将客户端 IP 存储为 Project Shield(与 X-Forwarded-For 标头中列出的 IP 相比)。是否可以让 ALB 记录原始客户端 ip(在 X-Forwarded-For 中最左侧)?
如果这是不可能的,也许有一个我忽略的更好的解决方案。
我的目标是让我们的防火墙设置解析这些日志,根据规则清洗它们,并根据恶意流量/模式将 IP 列入黑名单。
提前致谢。
nginx - 在 AWS ALB 上使用多个域在 NGINX 级别阻止 IP
我有一个 AWS ALB,它附加到多个域名。ALB 将流量转发到带有 NGINX 的 EC2 机器,这里 NGINX 也有多个与之关联的域。
我只想允许从特定 IP 访问我的域之一。并且所有其他域都应该可以从 0.0.0.0/0 访问。
这可以通过仅修改该域的配置文件而不是修改 nginx.conf 来完成(这样该设置将仅适用于一个域)
PS 限制应仅适用于单个域。
google-apps-script - 如何将具有基本授权的 UrlFetchApp 分配给按钮?
我在 Google Apps Script 中创建了函数,当我在 Google Apps Script 中运行它时效果很好。输出数据返回到 Google 表格。
单元格中的输出:
然后我将脚本分配给按钮“testFunction11”。当我单击按钮时,它会返回
它看起来像来自 API 服务器的响应。
我唯一的假设是谷歌工作表的按钮添加了一些标题、用户代理或内容类型来请求,这在 API 服务器中是不允许的。经过一番搜索,我想我无法在请求中重新分配用户代理。这是对的还是我做错了?
编辑1:
每个案例的标题console.log(UrlFetchApp.getRequest(url, params))
:单击电子表格中的按钮时:
对于脚本:
所以按钮只添加X-Forwarded-For
.
当我尝试手动添加X-Forwarded-For: 'unknown'
时出现这样的错误
俄语中的错误文本,很抱歉可能翻译不准确。这很有趣,因为当我Test: unknown
以同样的方式添加时,没有错误,但显然不起作用。看起来谷歌不允许更改此值。
将在邮递员中尝试不同的标头,并可能确认此标头是错误的原因。谢谢@TheMaster
编辑2:
我通过邮递员尝试了不同的标题。因此,结果是当我添加任何值的标题X-Forwarded-For
键时,它会返回"message": "An error has occurred."
当我不添加此键时,它运行良好。
因此,问题是通过 Google Apps 脚本禁用添加此标头的任何方法。好像没有。
c# - 为什么 https 请求资源时缺少“X-Forwarded-For”和“Via”标头?
我正在构建一个 Asp.Net Core Web 应用程序。我创建了一个以 json 格式返回请求标头的资源。我假设,当我通过透明代理服务器(来自列表https://www.proxynova.com/proxy-server-list/transparent-proxies/)请求此资源时,保证添加 X-Forwarded-For 和 Via 标头要请求,我将在响应的 json 中看到这些标头:
请求: https ://res.cloudinary.com/leninsdo/image/upload/v1550267036/1_vmfx0z.png
回复: https ://res.cloudinary.com/leninsdo/image/upload/v1550267039/2_dtftny.png
但是,当我通过 https 请求具有相同代理的完全相同的资源时,我在响应中看不到这些标头:
请求:https ://res.cloudinary.com/leninsdo/image/upload/v1550267251/3_qlifuv.png
回复:https ://res.cloudinary.com/leninsdo/image/upload/v1550267313/4.png
我使用 Kestrel 作为 Web 服务器,并以这种方式在 Program.cs 中对其进行配置:
控制器中迭代标头并将它们序列化为 json 的代码也很常见,并且似乎不是问题的根源:
而且我完全不知道为什么当通过 https 而不是 http 请求资源时,标头 Via 和 X-Forwarded-For 会消失。我已经使用来自许多不同站点的各种代理对其进行了测试 - 结果是相同的。
有人能告诉我为什么会发生这种情况吗?
javascript - 有什么方法可以强制 Segment JS 客户端使用 IPv6 而不是 IPv4?
我有一台同时具有 IPv4 和 IPv6 地址的设备。在我的 rails 应用程序中,请求来自 Cloudflare,从中提取的 IP 地址X-Forwarded-For
是 IPv6 地址。但是当我从 JS 客户端发送跟踪事件时,它默认使用 IPv4。有什么方法可以让 JS 客户端使用 IPv6 而不是 IPv4?
因为这个问题。我看到来自同一设备的事件来自两个不同的 IP。我尝试将 IPv4 转换为 IPv6。但它们是两个不同的 IP(不是同一 IP 的两个不同表示)。
iis - 在 W3SVC99 之后不再创建 inetpub 日志
我目前正在将站点迁移到 Windows Server 2016。运行 IIS 10.0.14393.0。
ID 为 99 以上的应用程序池中的所有站点在 C:\inetpub\logs\LogFiles 中没有文件夹。这些站点照常运行,但流量不会导致创建文件夹或日志文件。
ID 介于 1 到 99 之间的站点将继续创建 *.log 文件。
node.js - 如何通过代理连接识别https客户端
我们开发了一个通过 http/2 协议服务的公司 NodeJS 应用程序,我们需要通过 IP 地址识别客户端,因为服务器需要根据客户端的 IP(基本上是一些关于电话的数据)向客户端发送事件。
我可以成功获取客户端 IP,req.connection.remoteAddress
但是有些客户端只能通过我们的代理服务器访问服务器。
我知道x-forwarded-for
标头,但这对我们不起作用,因为代理无法修改 ssl 连接中的 http 标头。
所以我虽然可以从客户端获取 IP 并将其发送回服务器,例如在登录过程中。
但是,如果我没记错的话,浏览器不会向 javascript 提供该信息,因此我们需要一种方法来首先获取该信息。
研究它,我发现的唯一选择是从服务器获取,它可以告诉我从哪里到达它的 IP。
当然,通过https我不能因为代理。但是我可以很容易地启用一个 http 服务来服务客户端 IP。
但后来我发现由于“混合活动内容”问题,浏览器会阻止来自 https 服务页面的 http 连接。
我阅读了它,发现我可以得到“混合被动内容”,并且我成功地将垃圾数据下载为图像文件<img>
,但是当我尝试使用一个<object>
元素做同样的事情时,我得到一个“混合主动内容”块即使在 MDN 文档中也再次发出问题,它说它被认为是被动的。
有什么方法可以通过该(损坏的)<img>
标签读取该数据,还是我错过了使<object>
元素真正被动的东西?
任何其他实现我们目标的想法也将受到欢迎。
java - 在存在 XFF 标头的情况下将 `AuthenticationFailureBadCredentialsEvent` 与远程地址相关联
所以我写了这个...
然后意识到我不知道 SpringX-Forwarded-For
在安全上下文中设置远程地址时是否考虑了标头。
可以?
或者我如何将AuthenticationFailureBadCredentialsEvent
它与它起源的远程地址相关联?
apache - 如何在 Apache config 中的 http 请求上使用 x-forward-for 而不是 LB IP 读取 Client-IP
我需要在 httpd conf 中使用真实 IP 而不是 Proxy / Loabalancer IP 的 RewriteCond 语法。我的用例是一个维护页面,应该向所有用户显示,除了我的例外列表中的一些用户,由单独文件中列出的 IP 地址定义。
我已经在 apache 中将 REMOTE_ADDR 设置为 X-Forwarded-For 但我没有得到我需要的点。
我已将 Logformat 配置为
LogFormat "%{X-Forwarded-For}i \"test\" %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
我的输出是
www.xxx.yyy.zzz "test" 10.0.0.215 - - [22/May/2019:11:09:20 +0200]
但也可能是
www.xxx.yyy.zzz, 10.0.0.12 "test" 10.0.0.215 - - [22/May/2019:11:09:19 +0200]
所以我需要在我的用例中提取的第一个 IP。我的 httpd.conf 中有什么:
我需要的是真实 IP,而不是 REMOTE_ADDR,它是 X-Forward-For 标头信息的第一个条目。我如何才能提取这个并且我可以相信第一个 IP 每次都是客户端 IP?