为什么微信access token获取接口用GET不用POST?

黄冠能 发布于 07/22 11:18
阅读 486
收藏 0

开源软件供应链点亮计划,等你来!>>>

我不经常做微信开发,今天偶尔看了一下文档,发现微信公众号获取Access token以及企业微信获取Access token的方法均为GET方法,secret直接通过GET方法传不是会被监听吗?

其中微信公众号获取Access token需要配置IP白名单,这样做可以降低一些风险。但企业微信似乎没有这样做。

我不太明白,为什么不用POST,而用GET。我觉得这个问题比较明显和低级,应该是我自己什么地方搞错了。有人能帮忙解释一下吗?

参考:

加载中
4
nullpointerxyz
nullpointerxyz

看得出来,其实你不懂http协议,不知道从哪看到一些文章、一些词汇就生搬硬套的制造出一个问题。你所谓的监听是什么意思?即使如你所说get会被监听,你认为post就不会了?关于http协议最权威的文档是rfc2616,你要看英语比较吃力可以看一本好书《http权威指南》。

 

回答你的问题,http1.1的报文是字符串,http2的报文是二进制,如果存在中间人攻击是可以拿到完整的报文内容的,这与get还是post没有关系,与报文内容是否加密有关系,https才是用来解决这个问题的。

你也知道,不管是get还是post都可以完成获取服务器的数据,那为什么http协议要定义出来多个不同的method?除了get,post还有delete,put等。协议的目的是什么?是双方的约定,http协议是最上层应用层协议,偏向于符合人类的习惯,get、post是为了符合人类的语义。看一下rfc中怎么解释get方法的:The GET method means retrieve whatever information。post方法: The POST method is used to request that the origin server accept the entity enclosed in the request。

简单来说,get用于获取信息,post用于提交body的内容。一些遵守http协议的服务器或者客户端看到你是get请求会直接忽略body的内容,这叫协议,这叫约定。如果大家达成http协议定义的共识,并且接口的设计符合规范。看method就知道这个接口要干什么事情,反之,如果所有的接口都使用post,这是违背了http协议设计的意图。所以“获取Access token”难道不是用GET吗?

 

 

 

 

0
gammey
gammey

一般理解来说,get都是获取,post是发送数据。

RESTFUL之后有更标准的规范。

其次安全性是由https协议加密保证的,关键信息也在response里,和request是post还是get没有关系。

0
Aaron_Ma
Aaron_Ma

为什么你会认为POST比GET更安全?它们本质上没有任何区别。如果不是HTTPS,无论你用的GET还是POST,只要被监听了不都一个样,全是裸奔。凭什么监听的人能获取GET请求的内容就获取不到POST请求的内容?

微信用的是HTTPS,不怕你监听。是协议保证了接口的安全,而不是请求方式。

0
系统架构师傅
系统架构师傅

请注意你请求的获取token的接口是https也就是基于SSL的安全套接字,你的请求URL已经被加密传输了。从你发出请求的浏览器地址栏里输入url回车开始你的url就会被加密传递,原理是你的浏览器里存储了对应url server发的公钥,

1. 第一次请求这个服务器时先用公钥+一个随机数作为密钥对你的对等加密密钥abc生成xyz,

2. 服务端收到你加密的xyz并用对应的私钥解密成abc。

3.这时你将Url发送时会用abc为密钥把url加密传递,服务端再用已经收到的密钥abc解密。这就是https传递加密的方法。

如果你的url被截获,由于截获者没有证书就无法得知加密的密钥abc,没有密钥就没有办法解密url.

所以传递是安全的

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部