2013-08-01 3 views
3

Я создал модуль согласования файлов cookie, который используется на многих сайтах, все используют одну и ту же архитектуру сервера в том же кластере. Для посетителей этих сайтов можно администрировать свои настройки cookie (например, никакие рекламные куки, а разрешать куки аналитики) в центральном домене, который отслеживает пользовательские настройки (и посещенные сайты).удаление куки-файлов в другом домене с использованием mod-rewrite и apache

Когда они меняют свои настройки, все сайты, на которых посетитель находился с моим модулем (хранится в файле cookie), связываются, загружая его с помощью параметра в скрытые iframes. Я пробовал то же самое с изображениями.

На этих сайтах установлено правило перезаписи, которое определяет этот параметр, а затем убирает cookie (устанавливает дату в прошлом) и перенаправляет на страницу на сайте модуля (или изображение на сайте модуля).

Эта схема работает во всех браузерах, кроме IE, так как ей нужен P3P (вероятно, причина, по которой она не работает для изображений, похожа).

Я также попытался загрузить несуществующий образ в исходном домене (то есть домен, который использует модуль) через тег изображения, что, очевидно, приводит к 404. Это работает во всех браузерах, кроме Safari, что не устанавливает файлы cookie на 404 (по крайней мере, это мой вывод).

Мой вопрос в том, как можно отменить cookie согласия cookie на подключенных доменах, учитывая, что все, что я могу изменить, это правила перезаписи?

Я надеюсь, что я объяснил проблему достаточно хорошо для вас, ребята, чтобы дать ответ, и это решение возможно ...

+0

Почему вы не загружаете пустое образ файла вместо несуществующего изображения? – Jon

+0

Не будет ли пустой файл изображения попадать в тот же барьер p3p? Если нет (что я сомневаюсь), это означает, что мы должны добавить файл в каждый домен, где установлен модуль, что почти невозможно ... – jberculo

+0

Возможный дубликат [Как использовать SetEnv с параметром URL] (http: //stackoverflow.com/questions/1280220/how-to-use-setenv-with-a-url-parameter) –

ответ

0

Я до сих пор не в состоянии решить этот вопрос, но если смотреть на него наоборот, есть решение. Используя JSONP (например, см.: Basic example of using .ajax() with JSONP?), клиентский домен может загружать информацию с главного сервера и сравнивать ее с локальной информацией.

Исходя из этого, на сайте клиент может убрать печенье (или даже заменить его) и принудительной перезагрузки, которая будет запускать правила перезаписи ...

Недостатком этого решения является то, что он попадет на сервер для каждого просмотра страницы, и в моем случае это настоящая проблема. Только тестирование, которое каждые x минут или около того (путем установки временного файла cookie) обеспечит решение.

Другим, еще более простым решением будет истечение всех файлов cookie на клиентском сайте каждые x час. Это также приведет к пересмотру основного домена.