我的 CGI 脚本没有收到自定义 headers
My CGI script not receiving custom headers
我正在编写一个 CGI 脚本(Apache 上的 Perl,没有其他框架),它应该是一个 webhook 端点。技术细节是它应该从 Shopify 商店接收事件,但那是 semi-irrelevant。 Shopify 告诉我,为了验证 webhook 来自他们,我需要使用他们提供的密钥计算 HMAC,并确保它与 X-SHOPIFY-HMAC-SHA256
header 中的值匹配。我使用 requestb.in 查看发送的 webhook,我可以验证他们使用的 http 客户端是否正在发送 X-header.
然而,当我的 CGI 脚本运行时,我只得到 bog-standard headers。 X-SHOPIFY-HMAC-SHA256 在 Perl CGI 模块 http()
和 %ENV
环境变量中均未找到。 (我看了 and )
我正在使用 cgiwrap 来获得我的脚本额外权限,但这不应该阻止我看到 headers 对吗?
普通 apache 为 HTTP headers 设置环境变量。首先尝试不使用任何包装器。您也可以尝试 printenv.cgi
:
#!/usr/bin/perl
use Data::Dumper;
print "Content-type: text/plain\r\n\r\n".Dumper(\%ENV);
手动调用 printenv 或您的脚本以检查调用者是否可能导致问题:
curl -H "Foo: Bar" http://localhost/cgi-bin/printenv.cgi
如果您的脚本被调用为 API,您可能还想转储到文件中。
我正在编写一个 CGI 脚本(Apache 上的 Perl,没有其他框架),它应该是一个 webhook 端点。技术细节是它应该从 Shopify 商店接收事件,但那是 semi-irrelevant。 Shopify 告诉我,为了验证 webhook 来自他们,我需要使用他们提供的密钥计算 HMAC,并确保它与 X-SHOPIFY-HMAC-SHA256
header 中的值匹配。我使用 requestb.in 查看发送的 webhook,我可以验证他们使用的 http 客户端是否正在发送 X-header.
然而,当我的 CGI 脚本运行时,我只得到 bog-standard headers。 X-SHOPIFY-HMAC-SHA256 在 Perl CGI 模块 http()
和 %ENV
环境变量中均未找到。 (我看了 and )
我正在使用 cgiwrap 来获得我的脚本额外权限,但这不应该阻止我看到 headers 对吗?
普通 apache 为 HTTP headers 设置环境变量。首先尝试不使用任何包装器。您也可以尝试 printenv.cgi
:
#!/usr/bin/perl
use Data::Dumper;
print "Content-type: text/plain\r\n\r\n".Dumper(\%ENV);
手动调用 printenv 或您的脚本以检查调用者是否可能导致问题:
curl -H "Foo: Bar" http://localhost/cgi-bin/printenv.cgi
如果您的脚本被调用为 API,您可能还想转储到文件中。