曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 1425|回复: 0
打印 上一主题 下一主题

JSSDK config:invalid signature 签名错误

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2017-4-1 21:07:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在配置微信 JSSDK 中的 wx.config 时,虽然根据微信 JSSDK 开发文档给出的 demo 来操作,似乎没任何问题,但是总是莫名其妙的出现 config:invalid signature 错误提示。后来经过验证,错误源自 jssdk.php demo 程序:
  1. $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
  2. $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
复制代码


需要改为:
  1. $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
  2. $url = "$protocol$_SERVER[SERVER_NAME]$_SERVER[REQUEST_URI]";
复制代码


即 HTTP_HOST 改为 SERVER_NAME 即可。
HTTP_HOST 和 SERVER_NAME 的异同:
相同点:
当满足以下三个条件时,两者会输出相同信息。
1. 服务器为80端口
2. apache的conf中ServerName设置正确
3. HTTP/1.1协议规范
不同点:
1. 通常情况:
_SERVER["HTTP_HOST"] 在HTTP/1.1协议规范下,会根据客户端的HTTP请求输出信息。
_SERVER["SERVER_NAME"] 默认情况下直接输出apache的配置文件httpd.conf中的ServerName值。
2. 当服务器为非80端口时:
_SERVER["HTTP_HOST"] 会输出端口号,例如:mimiz.cn:8080
_SERVER["SERVER_NAME"] 会直接输出ServerName值
因此在这种情况下,可以理解为:HTTP_HOST = SERVER_NAME : SERVER_PORT
3. 当配置文件httpd.conf中的ServerName与HTTP/1.0请求的域名不一致时:
httpd.conf配置如下:
<virtualhost *>
ServerName mimiz.cn
ServerAlias www.mimiz.cn
</virtualhost>
客户端访问域名 www.mimiz.cn
_SERVER["HTTP_HOST"] 输出 www.mimiz.cn
_SERVER["SERVER_NAME"] 输出 mimiz.cn
所以,在实际程序中,应尽量使用_SERVER["HTTP_HOST"] ,比较保险和可靠。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-4 22:17 , Processed in 0.079264 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表