IncompleteSignature
户调用MNS HTTP API发送请求时,需要在Authorization header里带上签名值,当签名值和服务器端计算的不一致时,请求会被拒绝,服务器返回403 SignatureDoesNotMatch。 当遇到这种问题,请检查以下几项:
一,请求url是否正确 举ReceiveMessage(curl)为例: curl -X GET http://44404.mns.cn-beijing.aliyuncs.com/queues/queue1/messages?waitseconds=10 -H 'Authorization:MNS ijljkhkhlkjklshiojo.................' -H 'Date:Mon, 09 Nov 2015 06:24:41 GMT' -H 'x-mns-version:2015-06-06'
新协议(x-mns-version:2015-06-06, Authorization:MNS xxxxxxxx...)url为: http://$AccountID.mns.cn-beijing.aliyuncs.com/queues/$queueName/messages 旧协议(x-mqs-version:2014-07-08, Authorization:MQS xxxxxxxx...)url为: http://$AccountID.mns.cn-beijing.aliyuncs.com/$queueName/messages
关于新旧协议更多差异,请参考官方API文档: https://docs.aliyun.com/?spm=5176.7400025.9.11.uXUeIQ#/pub/mns/api_reference/api_spec&message_operation
队列地址中的AccountID即云账户的账号ID。 账号id.jpg
二,AccessKeyId和AccessKeySecrete是否正确
三,加密信息源是否正确
下面给出两种常见的错误信息源例子。
错误一: GET n text/xml;charset=utf-8 Date:Thu, 21 May 2015 03:50:03 GMT x-mqs-version:2014-07-08 /queue1/messages?waitseconds=10
正确一: GET n text/xml;charset=utf-8 Thu, 21 May 2015 03:50:03 GMT x-mqs-version:2014-07-08 /queue1/messages?waitseconds=10
解决方法:去掉“Date:”。
错误二: GET n text/xml;charset=utf-8 Thu, 21 May 2015 03:50:03 GMT x-mns-version:2015-06-06 /queue1/messages?waitseconds=10
正确二: GET n text/xml;charset=utf-8 Thu, 21 May 2015 03:50:03 GMT x-mns-version:2015-06-06 /queues/queue1/messages?waitseconds=10
解决方法:如果使用新协议,请使用新协议支持的请求格式。
错误三: GET n text/xml;charset=utf-8 Thu, 21 May 2015 03:58:23 GMT n /queues/queue1/messages?waitseconds=10
正确三: GET n text/xml;charset=utf-8 Thu, 21 May 2015 03:58:23 GMT /queues/queue1/messages?waitseconds=10
解决方法:如果没有以x-mns-开头的head,直接置为空,没有n。
关于Signature计算方法,请参考官方文档: https://docs.aliyun.com/?spm=5176.7400025.9.11.uXUeIQ#/pub/mns/api_reference/invoke&signature
官网提供了一个demo, 方便用户验证自己的签名过程是否正确,请见问题“为什么我的签名总是没算对?”: https://docs.aliyun.com/?spm=5176.7400025.9.11.uXUeIQ#/pub/mns/product-manual/FAQ
赞0
踩0