我正在编写一个CGI脚本(Perl on Apache,没有其他框架),它应该是一个webhook端点。技术细节是它应该从Shopify商店接收事件,但那是半无关紧要的。 Shopify告诉我,为了验证webhook是否来自他们,我需要使用他们提供的密钥来计算HMAC,并确保它与X-SHOPIFY-HMAC-SHA256
标头中的值匹配。我已经使用requestb.in查看已发送的webhook,并且我可以验证他们正在使用的http客户端是否正在发送X-header。
然而,当我的CGI脚本运行时,我只获得了标准的标头。 X-SHOPIFY-HMAC-SHA256既没有在Perl CGI模块http()
中找到,也没有在%ENV
环境变量中找到。 (我读过How do I access the HTTP Header of request in a CGI script?和How to fetch HTTP headers in perl when using CGI)
我使用cgiwrap来获取我的脚本额外的权限,但这不应该阻止我看到标题正确吗?
答案 0 :(得分:2)
Plain apache为HTTP标头设置环境变量。首先尝试没有任何包装。您也可以尝试ItemTemplate
:
ListBox
手动调用printenv或脚本以检查调用者是否可能导致问题:
printenv.cgi
如果您的脚本被称为API,您可能还想转储到文件中。