gpt4 book ai didi

node.js - 当通过 postman 请求时,HTTP 请求中带下划线的 header 参数在服务器端不可用

转载 作者:搜寻专家 更新时间:2023-10-31 22:34:17 24 4
gpt4 key购买 nike

以下是失败的 API 调用的 curl 导出 -

curl -X GET \
'http://endpoint.in/dummy/path?mobile=777777777' \
-H 'Content-Type: application/json' \
-H 'auth_token: iubsaicbsaicbasiucbsa'

根据日志检查, header 参数 auth_token 在服务器端根本不可用。

但是,当直接作为命令发出时,同样的 curl 会起作用。我安装了最新的 postman 版本 v6.2.3。此外,当通过其他工具(如 Advanced REST client of chrome)请求时,相同的 API 端点也可以工作。 .

之前,我还检查过阅读此线程 http://nginx.org/en/docs/http/ngx_http_core_module.html#underscores_in_headers

许多服务器,如 nginx,都有一个配置,如果设置了该配置,则会丢弃名称中带有下划线的 header 。

但是,我无法验证相同的内容,因为我无法确切地了解服务器是如何部署的。这是一个 Node 应用程序,我们运行此命令来运行应用程序 -

nohup /bin/forever start -o logs/out.log -e logs/err.log app.js

ps -ef | grep node 显示以下内容 -

root      5981     1  0 Jul19 ?        00:00:00 /root/.nvm/v7.2.1/bin/node /usr/lib/node_modules/forever/bin/monitor app.js
root 5991 5981 0 Jul19 ? 00:00:04 /root/.nvm/v7.2.1/bin/node /usr/local/another/path/to/app.js

更新

这也通过 Jmeter 干扰了我们的自动化测试。

更新

我们在服务器上运行着 nginx,它似乎在调用 Node 进程。我们观察到,在运行良好的服务器上,nginx 配置文件具有此设置 -

underscores_in_headers on;

但这在它不工作的服务器的配置文件中不存在。

另一个观察 - 我使用的是最新的 postman 版本 - 6.2.5,问题就在那里。但是,当我将同一个 postman 集合发送给另一个队友并且他在安装 postman 后点击它时,它对他有用。我仍然不确定问题是出在 postman 还是服务器设置上。

最佳答案

标题中没有明确禁止下划线,但在过去,CGI 下划线被转换为破折号。由于这个遗留问题,NGINX 和 Apache HTTPD 将 header 中的下划线视为潜在问题。

https://stackoverflow.com/a/22856867/2955337

你可以显式地设置underscores_in_headers on;,但是默认是关闭的,所以默认情况下NGINX不接受下划线

http://nginx.org/en/docs/http/ngx_http_core_module.html#underscores_in_headers

curl 显然将下划线转换为破折号以规避此问题。

https://github.com/requests/requests/issues/1292#issuecomment-15997612

关于node.js - 当通过 postman 请求时,HTTP 请求中带下划线的 header 参数在服务器端不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51842325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com