PosterousブログからRSSフィードを使用してコンテンツを取得しているPHP管理サイトがあります。このフィードにはPosterous URLの画像がありますが、検索するとAmazon S3 URLにリダイレクトされます。SignatureDoesNotMatchを取得せずにPHP + CURLでS3ホストイメージを取得する方法は?
私はcurlを使ってイメージをプルしようとし、PHPのCURLマニュアルページのコードを使ってローカルにキャッシュしようとしています:http://www.php.net/manual/en/ref.curl.php#93163。 S3へのリダイレクトを処理することもありますが、イメージを取得する代わりに、SignatureDoesNotMatchエラーが発生したXMLファイルが返されます。
この原因は何ですか?そして、エラーを防ぐために私は何ができますか?
でスペースを置き換えるURLする必要があります。断続的にPosterousによって生成されたAWSシグネチャには、特殊文字(%2B、%3Dなど)が含まれています。私が使用した[get_url()関数](http://www.php.net/manual/en/ref.curl.php#93163)では、urldecodeを呼び出していました。これらの特殊文字はすべてun -URLエンコードされた値を返し、それらを再びurlencodeしないため、CURL要求は失敗しました。私の場合は、単にurldecodeを削除するだけです。 – kinder
@kinder - 素晴らしいもの。私は過去にキーとバケツの名前に特殊文字を含む数多くの問題にぶつかってきました。 –