2

由于 Facebook 最近宣布他们在页面中支持 iframe,我已将我的 Facebook 页面切换为提取 iframe 。由于您需要在 Facebook 之外托管 iframe 页面,我认为使用 Cloudfront 托管文件(HTML 页面、CSS 样式表和 jpg 图像)会很好。不幸的是,尽管将 Cloudfront 文件的权限设置为 744,但 iframe 页面在浏览器中正确加载,但是当从 Facebook 调用时,我收到此错误消息

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

Facebook 和 Cloudfront 不一起玩有什么原因吗?到目前为止我还没有找到一个。

4

5 回答 5

4

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

最好的,

大卫布洛克

于 2011-06-03T15:10:22.097 回答
2

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

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

于 2016-02-04T13:36:57.927 回答
0

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

是的,这真的很容易。

  1. 随心所欲地托管 HTML 页面。HTTP 很好。

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

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

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

轰:完成。

于 2017-05-04T23:43:17.203 回答
-1

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

于 2011-02-25T12:02:50.640 回答
-2

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

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

于 2015-07-02T17:27:33.140 回答