346
新東方
消息通知常見問題__FAQ_開發人員指南_消息服務-阿裏雲
- 強烈建議使用輔助開發工具進行調試,可確定是否是HttpEndpoint接收消息的邏輯有問題。使用輔助開發工具可分別針對鑒權邏輯以及處理消息的邏輯進行調試。
- 如果通過輔助開發工具確認HttpEndpoint可以正常接收推送請求,但仍然無法接收線上服務的推送消息,建議使用日誌管理功能,能夠獲取消息服務接收發布的消息以及推送消息所有相關的日誌,可通過日誌查看消息服務的推送過程以及結果。也可通過加入MNS旺旺客戶技術支持群(51222373),專業的技術人員會給您提供幫助。
如何確認推送請求中x-mns-signing-cert-url所標識的證書地址是MNS官方給出的?
- 確認這點後才能保證推送請求是MNS發出的。
- 目前MNS是將公鑰證書放到OSS的固定Bucket(mnstest)中的,地址為:
https://mnstest.oss-cn-hangzhou.aliyuncs.com/x509_public_certificate.pem
,考慮到安全性,證書會定期更換,文件名也會發生變化,但一定還是放在Bucket(mnstest)中的。所以在判斷證書地址的有效性時可通過前綴匹配的方式進行,即判斷證書地址的前綴是否為:https://mnstest.oss-cn-hangzhou.aliyuncs.com/
即可。 - 將來可能會考慮將證書放到其他更安全的地方,屆時會通知大家。
HttpEndpoint端驗權時每次遠程請求公鑰證書會比較耗時,如果提高性能?
- 強烈建議根據公鑰證書地址,按Key-Value的方式緩存證書,這樣就可以從內存中直接獲取證書。MNS的每個推送請求中都會攜帶公鑰證書地址,如果證書更換,那對應的地址也會更新(文件名會更新,比如加上版本號),隻要地址沒有更新,就可以一直拿緩存的證書進行鑒權。所以在處理推送請求時,可以根據x-mns-signing-cert-url描述的地址從緩存中直接獲取證書,獲取不到再遠程訪問,並存到緩存中以便下次使用。
- 例:證書地址為:
https://mnstest.oss-cn-hangzhou.aliyuncs.com/x509_public_certificate.pem
,最簡單的就可以使用如下方式緩存:typedef map<string, string> cache;
cache["x509_public_certificate.pem"] = "$content";
cache["x509_public_certificate.pem.version2"] = "$content2";
HttpEndpoint簽名認證失敗,如何調查?
這裏列舉遇到過的一些問題:
- 用戶HttpEndpoint使用了某些HttpServer框架,對HttpHeader的Key進行了格式轉化,導致用戶在簽名認證的時候拿到的MNS自定義的HttpHeader的Key已經發生了變化(注:MNS自定義的Header的Key是全小寫的),最常見的是變成了首字母大寫。針對這種情況,隻需要在認證之前,將HttpHeader的Key全部轉為小寫就可以了。比如:
使用PHP編寫HttpEndpoint時接收不到消息體,怎麼玩?
確認下您的處理邏輯中,是否是直接使用 $POST 來獲取HttpBody的,如果是的話,需要改成這種方式:
file_get_contents("php://input");
原因:最常見的$_POST[‘fieldname’]方法,隻能接收Content-Type: application/x-www-form-urlencoded提交的數據,也就是表單POST過來的數據。而MNS推送請求中的Content-Type的類型僅支持:
text/xml;charset=utf-8
text/plain;charset=utf-8
application/json;charset=utf-8
file_get_contents(“php://input”)這種方法允許讀取POST的原始數據,對於不同Content-Type的POST數據都可以使用,甚至對於未指定Type的,也可以用來獲取原始數據。所以建議使用這種方法來處理推送請求。
最後更新:2016-11-23 17:16:08
上一篇:
常見問題__FAQ_開發人員指南_消息服務-阿裏雲
下一篇:
消息服務MNS和消息隊列ONS產品對比__FAQ_開發人員指南_消息服務-阿裏雲
ECS上的自建數據庫到RDS/MongoDB/PetaData/OceanBase的數據遷移__數據遷移_用戶指南_數據傳輸-阿裏雲
公共請求頭__API-Reference_日誌服務-阿裏雲
SDK 下載__Java SDK_SDK參考_E-MapReduce-阿裏雲
營銷郵件標準及相關規範__業務指導_產品使用問題_企業郵箱-阿裏雲
服務__係統管理_用戶指南(Linux)_數據管理-阿裏雲
JavaSDK手冊__SDK使用手冊_郵件推送-阿裏雲
ECS雲服務器自定義鏡像FAQ
獲取訪問AK__快速入門_消息服務-阿裏雲
什麼是MaxCompute__產品簡介_大數據計算服務-阿裏雲
業務模型__性能測試技術體係_性能測試體係_性能測試-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲