Html 在Cloudfront的页面上托管Facebook iFrame

Html 在Cloudfront的页面上托管Facebook iFrame,html,facebook,iframe,amazon-cloudfront,Html,Facebook,Iframe,Amazon Cloudfront,由于Facebook最近表示他们在页面中支持iframe,我已经将我的Facebook页面切换为拉iframe。由于您需要在Facebook之外托管iframe页面,因此我认为使用Cloudfront托管文件(一个HTML页面、一个CSS样式表和一个jpg图像)会很好。不幸的是,尽管将Cloudfront文件的权限设置为744(浏览器中的iframe页面),但当从Facebook调用时,我得到了 当我在Media Temple服务器上托管相同的文件时,实际Facebook页面上的iframe也会

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

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


Facebook和Cloudfront不合作有什么原因吗?到目前为止,我还没有找到一个。好的,可以这样做:但是你需要在Cloudfront上托管图像,在S3上托管其余内容。亚马逊提供了一套关于如何做到这一点的指南。问题已解决。

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

最好的


David Bullock

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

更新: 这被否决了,但是我将在以下方面帮助很多Facebook开发者。我们在S3上托管facebook应用程序的最后一个问题是CORS。我们通过执行“自定义错误响应”修复了405。有关详细信息,请参阅此链接:

我今天遇到了这个问题,它导致了一些磁头断裂。正如David Bullock指出的那样,问题在于Facebook通过
POST
请求加载HTML页面,但S3(因此通过扩展CloudFront)不会响应此请求提供资源(它返回
405方法不允许

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

对于AWS拒绝POST请求以及Facebook要求页面标签通过HTTPS托管的事实,有一个非常简单的解决方法:只需通过……重定向请求即可

是的,真的很简单

  • 在任何你喜欢的地方托管HTML页面。HTTP很好

  • 为页面创建一个略短的URL

  • 使用它将https://替换为http://-作为“安全页面选项卡” URL“创建Facebook页面选项卡时

  • 使用此高度未记录的对话框URL激活选项卡:app\u id&redirect\u uri=bitly\u URL


  • Boom:完成。

    好的,可以完成:但是您需要在Cloudfront上托管图像,在S3上托管其余内容。亚马逊提供了一套关于如何做到这一点的指南。问题已解决。不,通过cloudfront托管所有内容也应该有效。你想放在iframe中的页面的url是什么?实际上,使用S3向Facebook iframe提供内容似乎仍然存在问题:如果索引html页面托管在S3上,我会收到以下错误消息:。javascript文件和图像可以托管在Cloudfront上(它们现在位于该页面上)但是html不能从任何一个主机托管,而且出于某种原因css也不能从任何一个主机托管。我怀疑html问题是由Facebook引起的,但css问题很奇怪。S3上承载的内容(与Media Temple上的内容相同)在通过Facebook iframe查看时生成错误消息,如果您直接查看,则加载时不会出现问题: