Я просматривал документацию Facebook, читая о приложениях Canvas, и натолкнулся на пример приложения: http://developers.facebook.com/docs/samples/canvas. Однако, прочитав их пример, я очень запутался по поводу использования ими файлов cookie в приложении iframe.
Немного предыстории ...
Я уже поиграл с использованием iframes для встраиваемых виджетов (не связанных с Facebook), и я обнаружил, что в нескольких браузерах (Chrome, Safari и т. Д.) Действуют строгие политики в отношении файлов cookie и не разрешается использование междоменных файлов cookie в iframes. (Firefox, с другой стороны, позволяет iframes устанавливать междоменные куки в iframes). Например, если на foo.com есть iframe с src="http://bar.com/widget"
, виджет iframe не сможет установить файлы cookie для bar.com и, следовательно, будет иметь проблемы с сохранением состояния в iframe: bar.com будет интерпретировать каждый запрос (включая ajax). запросы) из виджета как свежий запрос без установленного сеанса. Я боролся и нашел способ обойти это, используя вместо этого JSONP и javascript для установки файлов cookie для foo.com ...
... и так?
Что ж, я посмотрел пример приложения Facebook iframe для холста и заметил, что их приложение (размещенное на runwithfriends.appspot.com) способно установить cookie u
с текущим идентификатором пользователя и несколькими другие параметры для домена runwithfriends.appspot.com. Он отправляет этот файл cookie при каждом запросе ... и работает как в Chrome, так и в Firefox! WTF? Как Facebook обходит ограничения междоменных файлов cookie в Chrome?
(Я уже знаю ответ сейчас, но я подумал, что это может быть полезно для любого, кто пытается понять то же самое - я опубликую ответ ниже.)