H5W3
当前位置:H5W3 > 其他技术问题 > 正文

【Web前端问题】为什么facebook的站内应用在调用APP地址时是POST请求

不知道大家有没有发现,facebook的站内应用是用iframe调用的,但是它没有直接在iframe的src里写上app的地址,而是在iframe里嵌入自己的一个地址,然后再通过这个地址POST一个请求到app的地址,为什么要做这样一个中转呢?直接用app地址不是会速度更快吗?

我想了下,如果单纯基于安全性来说不可能,因为无论是POST还是GET,如果其他人能抓到你的包,你的内容就是透明的,没什么区别。这到底是基于什么原因呢?

截图

回答:

facebook的确是因为安全原因才使用POST向iframe canvas发送请求的。其中的动机详见 https://developers.facebook.com/blog/… ,简单地说就是为了防止用户信息(主要是UID)通过refer泄露给第三方。

注意这篇文章发表于2010年10月,这个时候,facebook的iframe canvas还是以GET方式获得信息的。

后来,在2010年11月,facebook开发了一个POST to Canvas的功能,并且开始推荐开发者使用 https://developers.facebook.com/blog/… ,这个功能直到2011年3月末才成为必选功能。

值得一提的是,facebook为了防止信息泄露,在用POST方式后还做了一系列看不见的动作,包括强制要求所有的app必须支持https,以及将access_token内容进行进一步加密、去掉了其中用明文存储的UID信息等。做这些事情其实都需要耗费facebook额外的开发和运营成本,恐怕只有在国外才会舍得这么花钱在隐私保护上面吧。

回答:

因为要POST验证信息

Whenever your application is loaded within a Canvas page, Facebook will make an HTTP POST to your Canvas URL. This request will include a POST variable called signed_request.

See:
https://developers.facebook.com/docs/…

回答:

因为要给应用POST相关信息,用户是否授权啊,授权自后的token啊什么的,GET有长度大小的限制不灵活
我猜的

回答:

公司网站上做了几个其他账号的登录系统,同样基于oauth2.0的授权登录,获取access_token的请求豆瓣明确要求为必须是POST,其他的网站可以是GET请求。所有我觉得这个没什么一定是这个或者一定是那个,如果facebook用GET请求的,会不会也会有疑问为什么不用POST呢?

回答:

这是站内应用吗?

本文地址:H5W3 » 【Web前端问题】为什么facebook的站内应用在调用APP地址时是POST请求

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址