【问题标题】:Hosting Facebook iframes on pages on Cloudfront在 Cloudfront 的页面上托管 Facebook iframe
【发布时间】:2011-06-26 10:56:57
【问题描述】:

由于 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 不一起玩有什么原因吗?到现在都没找到。

【问题讨论】:

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

标签: html facebook iframe amazon-cloudfront


【解决方案1】:

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

最好的,

大卫·布洛克

【讨论】:

    【解决方案2】:

    我今天遇到了这个问题,它引起了一些头疼。正如 David Bullock 指出的那样,问题在于 Facebook 通过 POST 请求加载 HTML 页面,但 S3(因此通过扩展 CloudFront)不会提供资源来响应此请求(它返回 405 Method Not Allowed)。

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

    【讨论】:

      【解决方案3】:

      对于 AWS 拒绝 POST 请求这一事实令人震惊有一个简单的解决方法Facebook 要求通过 HTTPS 托管页面选项卡这一事实:只需通过重定向请求https://bit.ly/….

      是的,就是这么简单。

      1. 在您喜欢的任何地方托管 HTML 页面。 HTTP 很好。

      2. 为页面创建一个略短的 URL。

      3. 使用它——用 https:// 代替 http://——作为“安全页面选项卡” URL”在您创建 Facebook 页面标签时。

      4. 使用此高度未记录的对话 URL 激活选项卡:https://www.facebook.com/dialog/pagetab?app_id=app_id&redirect_uri=bitly_url

      繁荣:完成。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 不,它也应该可以通过云端托管所有内容。您要放入 iframe 的页面的 url 是什么?
        • 实际上,使用 S3 向 Facebook iframe 提供内容似乎仍然存在问题:如果索引 html 页面托管在 S3 上,我会收到以下错误消息:http://cl.ly/4q5h。 javascript 文件和图像可以托管在 Cloudfront 上(它们现在在该页面上),但 html 不能从任何一个托管,并且由于某种原因 css 也不能。我怀疑 html 问题是由 Facebook 引起的,但 css 问题很奇怪。
        • 托管在 S3 上的内容(与 Media Temple 上的内容相同)在通过 Facebook iframe 查看时会生成该错误消息,如果您直接查看,则不会出现问题:http://donaldjenkins-facebook.s3-website-us-east-1.amazonaws.com/
        【解决方案5】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-07-18
          • 2011-01-23
          • 1970-01-01
          • 1970-01-01
          • 2017-03-20
          • 2020-11-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多