Node.js 是否公开每个 HTTP 请求的环境变量?

2024-02-12

通过 Apache 上的 Passenger 5.0.15 使用 Node.js,我正在寻找一种在 Node.js 内检索每个 HTTP 请求环境变量的方法http.IncomingMessage object https://nodejs.org/api/http.html#http_http_incomingmessage或任何替代方案。

An example of what I mean by a per-request environment variable, would be one set by Apache mod_rewrite. This is not a real-world example, and I'm aware any path-related details could be easily retrieved in the Node app. Apache modules may set environment variables for the request1:

# Apache sets an environment variable for this HTTP request
RewriteRule path/([^/]+) - [E=pathvar:$1]

在 Ruby 的架子上,输入环境被传递到request.env https://github.com/rack/rack/blob/master/lib/rack/request.rb#L23-L25。在 PHP 中它被传递到$_SERVER["pathvar"].

乘客确实尝试设置它们,但做得有些不正确通过为整个 Node.js 进程设置它们 https://github.com/phusion/passenger/issues/1479#issuecomment-127277646,与为其设置的 HTTP 请求无关。这可能会在 Passenger 中得到修复或更改,但不能帮助我找到每个请求的变量。

console.log(process.env.pathvar);
// Has the value, but has been set for the entire Node.js process
// Subsequent requests retain the SAME value due to Passenger's current implementation

// Environment variables aren't present 
// in the http server request object
var s = http.createServer(function(request, response) {
    // undefined, which makes sense because they're not headers
    console.log(request.headers.pathvar);
});
  • 每个 HTTP 请求的环境变量作为 Node.js 中的一个概念是否有意义,以便 Passenger 可以正确设置它们?
  • 如果他们这样做,是否得到了支持http模块,以及如何检索它们?
  • 如果不是由httpmodule,有支持它们的中间件吗? (我发现没有提到环境变量Connect 的中间件集合中 https://github.com/senchalabs/connect#readme)

1The true use case we are trying to solve is retrieval of Shibboleth user authentication attributes, set by Apache mod_shib as environment variables similarly to how mod_rewrite would set them before invoking the Node.js application. Indeed this is the reason for involving Apache+Passenger in the first place. There is an available but undesirable workaround in Shibboleth configuration to send user attributes as HTTP headers instead. There are alternative SAML modules for Node.js as well, but current infrastructure already depends on Apache mod_shib.


None

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

Node.js 是否公开每个 HTTP 请求的环境变量? 的相关文章

  • Webrtc 重新协商,Firefox 到 Chrome,反之亦然,不更新流

    我已经成功建立对等连接 但我无法在 Chrome Firefox 上进行正确的重新协商 我已按照重新协商的步骤 将相机 视频更改为屏幕共享时 更新流 曲目 添加 删除 Changer 这击中了需要谈判 改变者 创建报价 更改者 设置本地描述
  • TweetNaCl.js 最小公钥签名示例

    我试图了解如何基于位于的演示来实现一个最小的基本公钥签名示例here https tweetnacl js org sign 使用纯javascript 我的研究还没有产生一个简单的 javascript 示例 我可以用它来理解其内部工作原
  • socket.io - ReferenceError:套接字未定义

    我正在尝试编写一个简单的应用程序 它将我在文本区域中输入的每个字符镜像到 div 使用socket io 但我不断收到以下客户端错误 ReferenceError 套接字未定义 这是我的服务器代码 var express require e
  • NodeJS Express 中每个请求的全局范围

    我有一个基本的快速服务器 需要在每个请求处理期间存储一些全局变量 更深入地说 请求处理涉及许多需要存储在变量中的操作 例如global transaction 当然 如果我使用global范围 每个连接都将共享其事务的信息 并且我需要一个全
  • MongoDB - 在父文档中填充 GridFS 文件元数据

    我使用 NodeJS 与 Express MongoDB Mongoose 和 GridFS 来上传和检索文件 我想通过 ID 引用其他文档中的文件 并在查询其他文档时填充文件元数据 例如 如果我有一个包含这样的文档的 用户 集合 id O
  • 使用 puppeteer 部署 firebase 功能时说即使我启用了 --no-sandbox 也找不到 chrome

    我正在尝试将 firebase 函数部署到使用 puppeteer 的 firebase 项目 我让它在本地计算机上运行 但是当它尝试在 firebase 上运行时 我收到此错误 Exception from a finished func
  • 如何使用redis发布/订阅

    目前我正在使用node js和redis来构建应用程序 我使用redis的原因是因为发布 订阅功能 该应用程序只是在用户进入用户或离开房间时通知经理 function publishMsg channel mssage redisClien
  • 如何在 Mongoose 中定义排序函数

    我正在开发一个小型 NodeJS Web 应用程序 使用 Mongoose 访问我的 MongoDB 数据库 我的收藏的简化架构如下 var MySchema mongoose Schema content type String loca
  • Node.js - 将数据缓冲到 Ffmpeg

    我使用 Node js 和 Ffmpeg 来创建动画 因为我试图避免第三方 avi mp4 解析器 所以我决定将动画输出为原始 rgb24 数据文件 然后使用一些程序将其转换为 mp4 文件 我发现 Ffmpeg 是免费且开源的 它完全可以
  • 快速解析 req.body 中的 multipart/form-data post

    我正在尝试使用 Chrome 和 Firefox 浏览器上的 jQuery Ajax FormData 对象上传文件 我用来执行此操作的代码如下 var formData new FormData formData append image
  • 以小并发批量运行 Promise(一次不超过 X)

    Async 库具有类似的功能每个限制 https github com caolan async eachLimit它可用于将大量作业有效地分布在多个 CPU 核心上 如下所示 var numCPUs require os cpus len
  • AWS DynamoDb DocumentClient - 从项目数组创建批量写入 - node.js

    我正在尝试执行batchWrite使用 DynamoDB 的操作DocumentClient来自项目数组 JSON 这是我的代码 var items for i 0 i lt orders length i var ord orders i
  • 使用 NodeJS、Express 和 Passport-ldapauth 进行 LDAP 身份验证

    我在使用标题中提到的工具 应用程序对 Active Directory 服务器进行身份验证时遇到问题 我正在使用测试AD环境发现here http www forumsys com tutorials integration how to
  • Nodejs 上使用 DNS 进行 Consul 服务发现

    TL DR 大家好 我试图从用 Express 编写的 NodeJS 前端调用 NodeJS 后端微服务 通过Consul https www consul io DNS接口 https www consul io intro gettin
  • Nodejs 在 Windows 上找不到已安装的模块

    我现在正在Windows上学习nodejs 使用npm cmd全局安装了几个模块 nodejs找不到已安装的模块 以玉石为例 npm install jade g Jade安装在目录中 C Program Files x86 nodejs
  • Node.js 和 .net 之间的命名管道通信

    我正在研究 net v4 5 2 和 Javascript node js v8 9 0 应用程序之间的进程间通信 我想为此使用 Windows 命名管道 并且仅限命名管道 对于 Javascript 应用程序 我使用的是命名管道包 v0
  • 在 Javascript 中缓存和预取过期的 Promise

    Promise 是我在 Javascript 中管理异步代码的首选方式 Memoize npm 上的 memoizee 是一个 Javascript 库 用于轻松缓存和预取函数结果 理想情况下 我想结合两者的优点 并且能够使 Promise
  • 如何从oracle存储过程中提取out变量?

    我有存储过程 其中有很多输出变量 所以我这样调用存储过程 export const infoHR3 async gt try const sql Declare ln order qty NUMBER ln in proc qty hr N
  • Express.js“app.use()需要中间件功能”

    我正在学习 Express js 4 和 Node 但遇到了一个我无法弄清楚的错误 我正在尝试使用 node sass 包来编译我的 sass 代码 但我无法启动并运行它 这是我的主文件的精简版本 var express require e
  • 如何在猫鼬中使用聚合

    如何在 mongoose 中定义以下 MongoDB 聚合查询 db contacts aggregate group id code Code name Name 查询的目的是获取不同代码和名称的列表 我当前的模型代码是 use stri

随机推荐

  • 如何使用 Cloudbees Jenkins 构建执行繁重任务

    我正在尝试在 Cloudbees 上构建并运行 Jenkins 我已经成功安装了 NodeJs 并从 BitBucket 存储库中提取了源代码 我正在尝试运行我的 grunt 任务来在部署之前缩小并连接我的 JS 和 CSS 文件 但是 即
  • 为什么 MouseEnter 和 MouseLeave 不可靠?

    根据this https stackoverflow com questions 12552809 问题 的answer https stackoverflow com questions 12552809 mousehover and m
  • Django 作为反向代理

    我的客户端 服务器应用程序主要基于特殊用途的http服务器 它以类似Ajax的方式与客户端进行通信 即 客户端 GUI 根据异步 http 请求 响应周期刷新 专用 http 服务器的可进化性是有限的 并且随着应用程序的增长 需要越来越多的
  • 虚函数和 boost 绑定奇怪的行为

    我在 Linux 下编写的一段代码中看到了一个奇怪的行为 我想分享它 看看是否有人知道其原因 我有一个基类和一个派生类 在基类中 我定义了一个虚拟方法 在派生类中 我使用相同的签名重新定义了该方法 然后我使用 boost bind 来启动一
  • Gremlin 找到最高匹配

    我计划使用图形数据库 AWS Neptune 可以使用 Gremlin 作为一种知识库进行查询 知识库将用作具有多个特征的实体的分类工具 为简单起见 我在本示例中使用几何形状来编码实体的属性 假设我想对与正方形 三角形和圆形相关的点进行分类
  • 什么是console.log?

    有什么用console log 请通过代码示例解释如何在 JavaScript 中使用它 它不是 jQuery 功能 而是用于调试目的的功能 例如 当发生某些情况时 您可以将某些内容记录到控制台 例如 someButton click fu
  • App Engine 上的前端实例小时数是如何计算的?

    我构建了一个简单的在线订购应用程序 它可能每周处理 25 小时 其中大部分是在周一和周二 查看仪表板 我看到 Billing Status Free Settings Quotas reset every 24 hours Next res
  • 访问嵌套对象时 Vue 发出警告

    我不知道为什么在访问嵌套对象时会收到 Vue 警告 user area name Vue warn 渲染错误 TypeError 无法读取未定义的属性 名称 类型错误 无法读取未定义的属性 名称 仅访问该对象没有任何警告 user name
  • ASP.NET MVC。如何使用 DisplayNameFor 创建表格标题和正文?

    如何使用获取属性显示名称DisplayNameFor 构建表头 例如 model IEnumerable
  • 如何使用App.config和System.Diagnostics动态设置日志文件?

    当我遇到一篇文章时 我正在寻找一种解决方案来为我的最新项目提供日志记录 http www daveoncsharp com 2009 09 create a logger using the trace listener in csharp
  • 来自单个源代码的多个 Android 应用程序包 .apk 文件

    我想要一个 Android 构建系统程序 命令行或 Eclipse 从单个源代码库生成多个 apk 文件 造成这种情况的一些常见原因 针对具有不同要求的市场提供特定版本或免费和付费版本 这个问题是NOT ABOUT 将共享代码打包成Andr
  • 如何安装 PSCX Powershell 模块?

    我运行的是安装了 PowerShell 2 的 Windows 7 我从这里下载了 2 1 版本 http pscx codeplex com releases http pscx codeplex com releases 发行说明说 解
  • 在ggplot中使用aes的两种方式有什么区别?

    我最近开始学习 R 但对 ggplot2 中的 aes 功能感到困惑 我在代码中看到了两个不同的地方放置了 aes ggplot data mpg geom point mapping aes x displ y hwy ggplot mp
  • 如何将上下文从 MainActivity 传递到 Android 中的另一个类?

    我在尝试将上下文从 MainActivity 类传递到另一个类时遇到问题 这是 ContextPasser 类 public class ContextPasser extends Application public Context co
  • 如何在android Wear 2.0中创建弯曲滚动条?

    我正在使用 Wea rableRecyclerView 创建弯曲布局 但默认滚动条仍然是垂直的 有没有办法创建像 android Wear 2 0 启动器一样的弯曲滚动条 实际上 对于占据整个屏幕的任何可滚动视图 滚动条都是圆形的 这是 W
  • 错误“mysqli::real_connect(): (HY000/2002): 仅...允许。”

    错误 mysqli real connect HY000 2002 每个套接字仅使用一次 地址 协议 网络地址 端口 通常是允许的 然而 看来我有足够的端口 DETAILS 我有一个MySQL服务器已经运行了几个月没有出现问题 我在跑步Wi
  • “新的临时证书过期太快:当前时间:”M

    多年来我一直从 Windows 上的 CloudSQL 代理连接到 Google Cloud Platform MySQL 突然之间 我无法连接 当我使用 PowerShell 启动代理时 它启动正常并表示已准备好进行新连接 然后 当我尝试
  • 仅返回 SELECT 的第一个字母顺序结果

    我试图在按字母顺序排序后仅返回查询的第一个结果 SELECT MIN DisplayName FROM User GROUP BY DisplayName 我相信上面的方法可以解决问题 但它仍然按字母顺序返回所有结果 我怎样才能得到想要的结
  • Java 中的综合类

    Java 中的合成类是什么 为什么要使用它 我该如何使用它 Java 具有在运行时创建类的能力 这些类称为综合类或动态代理 See http java sun com j2se 1 5 0 docs guide reflection pro
  • Node.js 是否公开每个 HTTP 请求的环境变量?

    通过 Apache 上的 Passenger 5 0 15 使用 Node js 我正在寻找一种在 Node js 内检索每个 HTTP 请求环境变量的方法http IncomingMessage object https nodejs o