我参与了一个使用 JS API 的粉丝专页项目,因此我们决定将该网站托管在 Amazon S3 存储桶上,因为 a) 它是静态内容,并且 b) 自 2011 年 10 月以来,Amazon 拥有 Facebook 应用程序所需的 SSL 证书。
但事实证明,Facebook 不是通过 HTTP GET,而是通过 HTTP POST 请求粉丝页面(额外的安全检查?他们为什么不直接发送到 HTTP HEADERS?)。
亚马逊明智地发回了以下信息:
405 Method Not Allowed
Code: MethodNotAllowed
Message: The specified method is not allowed against this resource.
ResourceType: OBJECT
Method: POST
RequestId: XXXXXXXXXXXXX
HostId: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
...因为它认为 Facebook 正在尝试通过 POST 上传
具有讽刺意味的是,Facebook 实际上建议那些在 http://www.facebook.com/note.php?note_id=10150223945345844 上没有 SSL 证书的人使用 S3。
底线:有没有人设法在 2011 年 10 月后的 S3 存储桶上托管粉丝专页?是否有可以帮助解决此问题的存储桶策略?
最佳答案
一种选择是使用云端指向 EC2 实例。这将愉快地接受 Post 请求。只需确保您在响应 header 上设置了一个非常长的缓存 TTL,以确保该实例不会一直受到请求的影响。您仍然可以在 s3 中托管您的图像等。 EC2 实例将只负责翻译发布请求。
关于FaceBook 通过 POST 加载 HTTPS 托管的 iframe 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9468722/