中国移动开放平台的通信开放平台地址:https://dev.cmccopen.cn/

我遇到的问题:请求验证的结果是状态码是:401,原因是:authentication fail

我的开发语言:PHP

官方的文档“鉴权”模块的说明截图 如下:

原因查找过程:

1、开始以为是base64编码对方服务器没法解码,但生成的base64编码放到其他网络平台解码是可解码的,由此说明base64编码是没问题的;

2、折腾了半天实在没办法,咨询了对方技术人员,得知对方用java环境,技术人员建议我使用java环境;

3、自己电脑上搭建了java 写了个生成Authorization值的程序;发现java生成的值是可以验证通过的;经仔细对比数值发现:是时间戳的问题

PHP生成的时间戳代码是time(),

java生成的时间命令则是System.currentTimeMillis();

结果是不一样的,PHP time()生成的时间戳只精确到秒,而java System.currentTimeMillis()生成的结果是精确到毫秒的;很明显一眼能看出的结果就是时间戳字符串的长度都不一样;加密出来的鉴权信息肯定是不一样的,对方服务器校验肯定会失败。

解决方案:

PHP 生成的时间戳让其精确到毫秒(传说PHP 没有默认精确到毫秒的方法,)

public function MyMsectime()
{list($msec, $sec) = explode(' ', microtime());$msectime = (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000);return $msectime;
}

批评:

首先承认自己太菜了,重点就是:移动开放平台写文档人,时间戳你为何不详细的说明需要精确到毫秒(见上文截图绿框)

中国移动开放平台(dev.cmccopen.cn)请求头Header:Authorization验证失败的原因(我遇到的)相关推荐

  1. java http head 请求_http请求头header、请求体body、请求行介绍

    HttpServletRequest对象代表客户端的请求,当客户端通过http协议请求访问 服务器的时候,http请求头的所有信息都封装在这个对象中,通过这个对象,可以获取客户端请求的所有信息.htt ...

  2. 解决通过Nginx转发的服务请求头header中含有下划线的key,其值取不到的问题

    解决通过Nginx转发的服务请求头header中含有下划线的key,其值取不到的问题 参考文章: (1)解决通过Nginx转发的服务请求头header中含有下划线的key,其值取不到的问题 (2)ht ...

  3. 前端cookie 放到请求头_ajax请求携带cookie和自定义请求头header(跨域和同域)

    错误: 1.ajax请求时是不会自动带上cookie的,要是想让他带上的话,必须设置withCredential为true. 正确: 1.ajax同域请求下,ajax会自动带上同源的cookie: 2 ...

  4. http请求头header、请求体body、请求行介绍

    HttpServletRequest对象代表客户端的请求,当客户端通过http协议请求访问 服务器的时候,http请求头的所有信息都封装在这个对象中,通过这个对象,可以获取客户端请求的所有信息.htt ...

  5. 微信小程序设置请求头header 参数 token 验证

    小程序开发中需要在请求头header中用到 token 验证 header:{ 'content-type': 'application/x-www-form-urlencoded', 'access ...

  6. 构建header爬虫构建请求头header

    今天学写爬虫,刚上来就碰壁了,大多数浏览器都有反爬虫机制,于是要学会设置请求头header,这样就可以伪装成浏览器. Header来源 打开任意浏览器某一网页,按F12,点开network,再按提示按 ...

  7. Android Retrofit2 动态(静态)添加请求头Header

    Retrofit提供了两个两种定义HTTP请求头字段的方法即静态和动态.静态头不能改变为不同的请求,头的键和值是固定的且不可改变的,随着程序的打开便已固定. 动态添加 @Header @GET(&qu ...

  8. 百度站长HTML添加301错误,搜索资源平台(百度站长)添加网站 使用文件验证 验证失败,原因:未知原因:301的解决办法...

    搜索资源平台(百度站长)添加网站 使用文件验证 验证失败,原因:未知原因:301的解决办法 之前使用过百度站长后台添加新的网站时,从没遇到过问题,一般都是选择第一种验证方式(文件验证),文件验证应该是 ...

  9. 以ajax请求方式进行文件下载操作失败的原因及解决方案

    以ajax请求方式进行文件下载操作失败的原因及解决方案 参考文章: (1)以ajax请求方式进行文件下载操作失败的原因及解决方案 (2)https://www.cnblogs.com/sjshare/ ...

  10. 公众号基本配置(token验证失败)|公众平台测试账号接口配置信息(token验证失败)

    1.公众号基本配置(token验证失败) <?php define("TOKEN", "你自己的token");$wechatObj = new Call ...

最新文章

  1. Linux IO多路复用之epoll网络编程(含源码)
  2. pytest第二版 进阶学习
  3. gnuradio android手机,如何搭配USRP在安卓设备上搭建GNU Radio
  4. python弹球小游戏程序_Python实现弹球小游戏
  5. QT中的滚动条QScrollArea
  6. MVC判断用是否登录了平台
  7. 【数据库】第二章 基础函数、聚合函数、条件查询、子查询和多表查询
  8. 【机器学习】监督学习--(分类)支持向量机SVM①
  9. python 进度条_6种酷炫Python运行进度条
  10. Golang之Channel的理解与应用
  11. [UVA 202]Repeating Decimals
  12. 网络控制播放器(局域网内通过TCP和UDP控制视频播放器)
  13. [论文总结]:Mixed Precision Training 混合精度训练 百度和英伟达联合发表 ICLR 2018
  14. bsearch()快搜函数
  15. springboot~Integer和int如何选择,Integer的意义何在
  16. JVM内存模型和性能调优:阿里巴巴Arthas调优工具:什么是Arthas- 第43篇
  17. 【纯净安装、免U盘】无视win11硬件要求,直接setup.exe安装win11
  18. 云测试软件详解,云计算存储测试:FIO工具入门与实战
  19. 爆料!华为胡玲或入职头条,职场人该如何说“真话”?
  20. 微信、小程序、h5等实名认证接口

热门文章

  1. [转]Warzone 2100(战争地带2100)
  2. 外汇短线交易者的规则
  3. composer下面composer.lock有什么用处 以及 如何优雅地删除它
  4. 两个计算机怎么共享一台打印机共享,多台电脑怎样共享一台打印机?这两个设备完美实现!...
  5. Win10 打开图片,提示文件系统错误(-2147219196)
  6. UNITER: UNiversal Image-TExt Representation Learning
  7. 用javascript 判断IE窗口是否打开
  8. EXCEL中的两大函数语法(subtotal ,sumifs)
  9. 计算机组成原理rs rd,计算机组成原理五章.ppt
  10. python切片练习(League of Legends)