在Cloudfront的页面上托管Facebook iframe

时间:2011-02-13 14:10:18

标签: html facebook iframe amazon-cloudfront

由于Facebook最近announcement他们支持页面中的iframe,我已经将我的Facebook页面切换为拉取iframe。由于您需要在Facebook之外托管iframe页面,我认为使用Cloudfront托管文件(HTML页面,CSS样式表和jpg图像)会很不错。不幸的是,尽管将Cloudfront文件的权限设置为744,浏览器中的iframe页面loads correctly,但是当从Facebook调用时,我得到this error message

当我在Media Temple服务器上托管相同的文件时,实际Facebook页面上的iframe也是loads correctly

为什么Facebook和Cloudfront不能一起玩?到目前为止我还没找到。

5 个答案:

答案 0 :(得分:4)

不幸的是Facebook使用HTTP POST加载iframe页面,而不是HTTP GET并且不兼容,因为Amazon有一个REST接口并正确使用POST来上传/修改内容。

最佳,

大卫布洛克

答案 1 :(得分:2)

我今天遇到了这个问题,引起了一些头疼。正如大卫布洛克指出的那样,问题是Facebook通过POST请求加载HTML页面,但S3(因此扩展名为CloudFront)将不会响应此信息(它返回405 Method Not Allowed)。

您可以在S3 / CloudFront上托管CSS,脚本和图像,但最初的HTML页面必须位于其他服务器上。如果您担心来自全球的负载或延迟,那么您可以尝试实施一个小型重定向器,将Facebook POST请求转发到CloudFront缓存位置(您必须返回303 See Other到执行此重定向,以便浏览器发出GET请求:请参阅RFC 2616)。

答案 2 :(得分:0)

有一个令人震惊的简单的解决方法,因为AWS拒绝POST请求这一事实,即Facebook要求通过HTTPS托管页面标签:只需重定向请求https://bit.ly/ ...

是的,这真的很容易。

  1. 在任意位置托管HTML页面。 HTTP很好。

  2. 创建一个缩短网页的缩短网址。

  3. 使用它 - 将https://替换为http:// - 作为"安全页面标签 URL"当您创建Facebook页面选项卡时。

  4. 使用此高度未记录的对话框网址激活标签:https://www.facebook.com/dialog/pagetab?app_id= app_id & redirect_uri = bitly_url

  5. 热潮:完成。

答案 3 :(得分:-1)

好的,可以完成:但您需要在Cloudfront上托管图像,在S3上托管其余内容。亚马逊提供了一套clear instructions如何做到这一点。问题解决了。

答案 4 :(得分:-3)

使用Cloudfront捕获405错误并将html作为“自定义错误响应”页面提供给所需的索引页

更新: 这是投票,但我将帮助许多Facebook开发人员以下。我们在S3上托管facebook应用程序的最后一个问题是使用CORS。我们通过执行“自定义错误响应”来修复405.有关详细信息,请参阅此链接: http://blog.celingest.com/en/2014/10/02/tutorial-using-cors-with-cloudfront-and-s3/