検索

ホームページ  >  に質問  >  本文

javascript - 为什么facebook的站内应用在调用APP地址时是POST请求

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

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

怪我咯怪我咯2817日前1556

全員に返信(5)返信します

  • 伊谢尔伦

    伊谢尔伦2017-04-10 12:44:37

    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额外的开发和运营成本,恐怕只有在国外才会舍得这么花钱在隐私保护上面吧。

    返事
    0
  • 怪我咯

    怪我咯2017-04-10 12:44:37

    因为要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/...

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-10 12:44:37

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

    返事
    0
  • 高洛峰

    高洛峰2017-04-10 12:44:37

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

    返事
    0
  • 黄舟

    黄舟2017-04-10 12:44:37

    这是站内应用吗?

    返事
    0
  • キャンセル返事