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