Размещение фреймов Facebook на страницах в Cloudfront - PullRequest
2 голосов
/ 13 февраля 2011

Я переключил свою страницу в Facebook, чтобы вытащить iframe в результате недавнего объявления Facebook , что они поддерживают iframe на страницах.Поскольку вам нужно разместить страницу iframe за пределами Facebook, я подумал, что было бы неплохо использовать Cloudfront для размещения файлов (HTML-страница, таблица стилей CSS и изображение jpg).К сожалению, несмотря на установку разрешений для файлов Cloudfront на 744, страница iframe правильно загружается в браузере, но при вызове из Facebook я получаю это сообщение об ошибке .

Когда я размещаю те же файлы на своем сервере Media Temple, iframe на текущей странице Facebook также загружается правильно .

Существует ли причина, по которой Facebook и Cloudfront не играют вместе?Я пока не смог найти его.

Ответы [ 5 ]

4 голосов
/ 03 июня 2011

К сожалению, Facebook загружает страницу iframe, используя HTTP POST, а не HTTP GET, и несовместим, поскольку Amazon имеет интерфейс REST и правильно использует POST для загрузки / изменения контента.

Best,

Дэвид Баллок

2 голосов
/ 04 февраля 2016

Я столкнулся с этой проблемой сегодня, и она вызвала некоторые царапины.Как указывает Дэвид Баллок, проблема в том, что Facebook загружает HTML-страницу по запросу POST, но S3 (и, следовательно, расширение CloudFront) не будет обслуживать ресурсы в ответ на это (возвращает 405 Method Not Allowed).

Вы можете разместить свои CSS, скрипты и изображения на S3 / CloudFront, но исходная HTML-страница должна быть на каком-то другом сервере.Если вы беспокоитесь о загрузке или задержке по всему миру, то вы можете попробовать реализовать крошечный перенаправитель, который перенаправляет запрос Facebook POST в расположение в кэше CloudFront (вам нужно будет вернуть 303 See Other, чтобы сделать это перенаправление, чтобывместо этого браузер отправляет запрос GET: см. RFC 2616 ).

0 голосов
/ 05 мая 2017

Существует шокирующее простое решение проблемы с тем, что AWS отклоняет запросы POST и тот факт, что Facebook требует размещения вкладок страниц через HTTPS: просто перенаправьте запрос через https://bit.ly/….

Да, это действительно так просто.

  1. Размещайте HTML-страницу где угодно. HTTP в порядке.

  2. Создать укороченный URL-адрес страницы.

  3. Используйте его - , заменив https: // на http://—as вкладку "Защищенная страница" URL ", как вы создаете вкладку страницы Facebook.

  4. Активируйте вкладку с помощью этого недокументированного диалогового URL: https://www.facebook.com/dialog/pagetab?app_id=app_id&redirect_uri=bitly_url

Бум: готово.

0 голосов
/ 02 июля 2015

Используйте Cloudfront, чтобы перехватить ошибку 405 и использовать ваш html как страницу «Пользовательский ответ об ошибке» на нужную страницу индекса

Обновлено: За это проголосовали, но я собираюсь помочь многим разработчикам Facebook со следующим. Последний вопрос, который у нас возник с размещением приложения facebook на S3, касался CORS. Мы исправили 405-е, выполнив «Пользовательский ответ об ошибке». См. Эту ссылку для получения подробной информации: http://blog.celingest.com/en/2014/10/02/tutorial-using-cors-with-cloudfront-and-s3/

0 голосов
/ 25 февраля 2011

ОК, это можно сделать, но вам нужно разместить изображения в Cloudfront и остальное содержимое на S3.Amazon предоставляет набор четких инструкций о том, как это сделать.Проблема решена.

...