鍍金池/ 問答/HTML/ ajax調(diào)用接口總是顯示簽名錯(cuò)誤?時(shí)間戳不對(duì)還是headers寫的不對(duì)?

ajax調(diào)用接口總是顯示簽名錯(cuò)誤?時(shí)間戳不對(duì)還是headers寫的不對(duì)?


        var timeStamp =  (new Date()).valueOf();//文檔上說要精確到毫秒 懷疑是不是時(shí)間軸的問題
        var appKey = "e510d4949fd3ce48ff34619f414b1ecc";
        var appId = "MB-ZNBX-0000";
        var accessKeyId = "1336739651091765"; 
        var accessKeySecret = "7fa68fbfa98114d7";
        var url = "/css/v1/fileListByMeta";
        
        var request = {
            "meta":{"macid":"000822AEA1FB"}
        };

        

        var requestString = JSON.stringify(request);
        console.log(typeof(requestString));
        console.log(typeof(request));

        var signWith = url + requestString + appId + appKey + timeStamp;
        console.log(signWith);
        var signf = sha256_digest(signWith);
        console.log(signf);
        $.ajax({
            url:"http://uws.haier.net/css/v1/fileListBy?pageNo=0",
            type:"post",
            dataType:"jsonp",
            data: {"appId": "MB-ZNBX-0000"},
            headers:{
                "appId":"MB-ZNBX-0000",
                "accessKey":"1336739651091765:mI/gp8By23ppsE7oAmK+OMXAjWtWxAuBY+7Zp/B4kodXBf6js37lqRqOzaIYUiWuSPlO29Sj9n0oWiPdCTGStA==",
                //平臺(tái)分配給應(yīng)用的唯一key
                    //static String appKey = "436743309a423a57e755250fbc41706c";
                "appKey":"e510d4949fd3ce48ff34619f414b1ecc",
                //平臺(tái)分配給應(yīng)用的服務(wù)訪問ID
                "accessKeyId": "1336739651091765",  
                "accessKeySecret":"7fa68fbfa98114d7",
                "timestamp":timeStamp,
                "sequenceId":"20171107155308000012",
                "sign":signf,
                "Accept-Language":"zh-Hans-CN;q=1",
                "Connection": "keep-alive",
                "Content-Type":"application/x-www-form-urlencoded",
                "Content-type":"application/json",
                "User-Agent":"XinXiaoChu/5.2.20170930.2 (iPhone; iOS 11.0.3; Scale/2.00)"

                    },

                success:function(data){
                    console.log(data);

                },
                
                    })

現(xiàn)在懷疑的問題是 可能是時(shí)間戳不對(duì)應(yīng) 導(dǎo)致 sha256加密之后的sign簽名跟服務(wù)器不對(duì)應(yīng) 或者是 ajax headers里面的參數(shù)不對(duì) chrome里面死活查看不到請(qǐng)求頭 不知道是哪里設(shè)置的不對(duì)

回答
編輯回答
離觴

你的 dataType 是jsonp, jsonp 一般不支持header 設(shè)置,而且jsonp一般要求get請(qǐng)求,
你把jsonp改成 json試試,看你的請(qǐng)求Url 也不像是jsonp 接口

2017年8月22日 16:07
編輯回答
貓小柒

如果是報(bào)簽名錯(cuò)誤的話,就應(yīng)該是前后端生成的signf不一致。你把參數(shù)給后端研發(fā),看他生成的和你是否一致。
跟時(shí)間戳timeStamp 應(yīng)該是沒關(guān)系的,因?yàn)楹蠖艘彩歉鶕?jù)你給的timeStamp值來生成sign的。
所以,需要確認(rèn)一下你生成sign的流程是否和后端一樣。

2018年4月20日 18:49