微信的文档中是这样说的
此后,每次开发者接收用户消息的时候,微信也都会带上前面三个参数(signature、timestamp、nonce)访问开发者设置的URL,开发者依然通过对签名的效验判断此条消息的真实性。效验方式与首次提交验证申请一致。
可是微信文档却没有说是以什么方式带上这三个参数(signature、timestamp、nonce)的
是放在HTTP的Head头部吗,还是用?带在URL后面?(这不是GET请求吗)
1
shangjiyu 2015-03-13 10:20:05 +08:00 1
不是 head 里面是在 URL 参数
|
2
faceair 2015-03-13 10:20:48 +08:00 via iPhone
放url后面 query参数
|
3
alex321 2015-03-13 10:22:16 +08:00
get 的方式。
|
4
kslr 2015-03-13 10:31:44 +08:00 1
开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带四个参数:
参数 描述 signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。 timestamp 时间戳 nonce 随机数 echostr 随机字符串 http://mp.weixin.qq.com/wiki/17/2d4265491f12608cd170a95559800f2d.html 你没有仔细看 |
8
kslr 2015-03-13 10:39:58 +08:00
@lvxudong 你在之前已经配置的时候已经连接成功,只要token不泄露就没啥问题吧,如果非要搞,恐怕只能判断微信服务器IP了。
http://mp.weixin.qq.com/wiki/0/2ad4b6bfd29f30f71d39616c2a0fcedc.html {"ip_list":["101.226.62.77","101.226.62.78","101.226.62.79","101.226.62.80","101.226.62.81","101.226.62.82","101.226.62.83","101.226.62.84","101.226.62.85","101.226.62.86","101.226.103.59","101.226.103.60","101.226.103.61","101.226.103.62","101.226.103.63","101.226.103.69","101.226.103.70","101.226.103.71","101.226.103.72","101.226.103.73","140.207.54.73","140.207.54.74","140.207.54.75","140.207.54.76","140.207.54.77","140.207.54.78","140.207.54.79","140.207.54.80"]} |
10
alex321 2015-03-13 11:11:04 +08:00
@lvxudong 用户发送消息经过微信服务器中转时,微信向你的 api 发起请求的时候都会在 url 上添加 signature、timestamp、nonce 这几个参数以 get 方式传递给你,你可以通过它们校验微信消息是否合法地来自微信服务器。而用户发送的内容会由微信服务器以 xml 的格式以 post 的方式传递给你。
|
11
lvxudong OP @alex321 谢谢,查看一下微信请求的日志,终于了解了。
纠正你一下, >用户发送消息经过微信服务器中转时,微信向你的 api 发起请求的时候都会在 url 上添加 signature、timestamp、nonce 这几个参数以 get 方式传递给你 这里用户发送的消息经过微信服务器中转时,微信服务器是用 POST 方式把XML传给我的,不是GET 额 |
12
qiayue 2015-03-13 11:24:59 +08:00
签名参数 get
消息体(xml) post |
14
siko 2015-03-13 11:40:35 +08:00
看来是没法绕过了?
|
15
zieglar 2015-03-13 11:41:06 +08:00 1
|