Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services SQS接收消息请求_Amazon Web Services_Amazon Sqs - Fatal编程技术网

Amazon web services SQS接收消息请求

Amazon web services SQS接收消息请求,amazon-web-services,amazon-sqs,Amazon Web Services,Amazon Sqs,我试图使用V4签名编写POST请求,从C++中的SQS服务器获取消息,POST消息如下所示 POST/134148934511/Localhost/?Action=ReceiveMessage&SignatureMethod=AWS4-HMAC-SHA256&SignatureVersion=4&Version=2012-11-05&X-Amz-Credential=AKIAI21OTNJCTG12UP7NA/20140602/us-east-1/sqs/AWS4_请求&X-Amz-Date=2

我试图使用
V4
签名编写
POST
请求,从
C++
中的
SQS
服务器获取消息,
POST
消息如下所示

POST/134148934511/Localhost/?Action=ReceiveMessage&SignatureMethod=AWS4-HMAC-SHA256&SignatureVersion=4&Version=2012-11-05&X-Amz-Credential=AKIAI21OTNJCTG12UP7NA/20140602/us-east-1/sqs/AWS4_请求&X-Amz-Date=20140602T152045Z&X-Amz-Content-SHA256=E3B0C44298FC149AFB8996FB927AE41E464B494CA499EDB78855&X-Amz-Amz-host=签名主机;x-amz-content-sha256;x-amz-date&Signature=6fada82dcfa52392bd15d29946115e34e1f2485fe87a59cead8320fa05bcea67 HTTP/1.1 主持人:sqs.us-east-1.amazonaws.com 接受:/ 内容长度:0 内容类型:application/x-www-form-urlencoded

但我收到了一条
403禁止
错误消息(尽管我拥有所需的权限)。 (我确信aws版本4的签名过程是正确的(用S3检查))
我做错了什么?

回答我自己的问题

上述要求中几乎没有什么错误

a) 在POST请求中,您不将查询参数包含在URL中,而是将其添加到正文本身(这也通过标题“Content-Type:application/x-www-form-urlencoded”指示给服务器)

b) 始终记住在创建签名时将所有头添加到curl请求中,否则它将抛出“签名不匹配”错误