2016-04-24 21 views
0

webhookエンドポイントと思われるCGIスクリプト(ApacheではPerl、その他のフレームワークはありません)を作成しています。技術的な詳細は、Shopifyストアからイベントを受け取ることになっていますが、それは半無関係です。 Shopifyは、ウェブフックがそれらから来たものであることを確認するために、彼らが提供する秘密鍵を使用してHMACを計算し、それがX-SHOPIFY-HMAC-SHA256ヘッダーの値と一致することを確認する必要があります。私はrequestb.inを使ってwebhookを見てきました。使用しているhttpクライアントがX-headerを送信していることを確認できます。私のCGIスクリプトはカスタムヘッダーを受け取っていません

しかし、私のCGIスクリプトが実行されているときには、私はbog-standardヘッダしか取得しません。 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を使用していますが、それは私の右のヘッダーを見るのを止めるべきではないですか?

+1

どのウェブサーバーまたはフレームワークを使用しますか? – Sebastian

+0

Apache上のPerlだけです。フレームワークはありません。 – AnotherParker

答えて

2

プレーンapacheは、HTTPヘッダーの環境変数を設定します。ラッパーを一切使わずに試してみてください。また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と呼ばれます。

も参照してください。http://httpd.apache.org/docs/current/howto/cgi.html

+0

ありがとう、これは非常に役に立ちます。ローカルリクエストは機能しているようです。 – AnotherParker

+0

それは何だったのかわかりませんが、これは私がそれを追跡するのを助けました。恐らくアンダースコア/ハイフンの問題です。 – AnotherParker

+1

また、Content-typeとしてtext/htmlの代わりにtext/plainを使用します。 – AnotherParker

関連する問題