Как решить эту проблему с помощью манифеста HTML5? - PullRequest
0 голосов
/ 30 июня 2011

Исходя из своего опыта, я пришел к выводу, что схема манифеста HTML5 была действительно ужасно разработана.

Мой сайт обслуживает файл манифеста, когда пользователь входит в систему. К сожалению, когда он выходит из системы,все еще может получить доступ к кешированным защищенным материалам.Кто-нибудь может придумать, как это исправить?

Ответы [ 3 ]

3 голосов
/ 30 июня 2011

Файл манифеста предназначен для перевода сайта в автономный режим и возможности навигации. По сути, он просто говорит браузеру загружать и хранить эти вещи в кеше. Если вы добавляете секретный материал в манифест и пользователь выходит из сети, он должен иметь возможность получить к нему доступ - или какой смысл иметь специальный файл «залогинен в манифесте», если он должен быть авторизован (для этого онлайн)?

Вы можете добавить javascript, который проверяет, находится ли пользователь снова в сети и, если он, пытается проверить «состояние входа в систему» ​​и перенаправляет или удаляет секретный материал из localalstorage (если вы используете localalstorage для сохранения «секретного» материала) и JavaScript для отображения его вместо файла манифеста)

Допустим, секретный материал - это изображение, и вы не используете файл манифеста, а просто отображаете изображения, когда пользователь вошел в систему, и это очень важно, пользователь не может просмотреть это изображение после выхода из системы, вам необходимо установить http заголовки no-cache и cache-expire до некоторой случайной даты прошлого, так что обычный пользователь увидит ее больше. Проблема в том, что изображение загружается каждый раз, когда кто-то заходит на сайт.

2 голосов
/ 30 июня 2011

Вам нужно подходить к кешу приложений HTML5 по-другому. Это не полезно для кэширования динамически генерируемых страниц на стороне сервера, особенно тех, которые требуют входа в систему. Кэш приложений не имеет ни логинов, ни защиты страницы от кого-то с другим логином / без логина.

Это гораздо более уместно для сайта на основе AJAX, где весь HTML / CSS / JavaScript статичен и зарегистрирован в кеше приложения, а данные вместо этого выбираются через AJAX, а затем используются для заполнения страниц. Если вам необходимо кэшировать данные в приложении для автономного использования, то используйте для данных один из автономных механизмов хранения данных, например, Local Storage / Session Storage или IndexedDB.

Затем вы можете сами решить, сколько данных вы хотите кэшировать в автономном режиме, поскольку нет способа проверить логин, не позвонив на сервер, который естественным образом недоступен во время автономного режима.

1 голос
/ 30 июня 2011

Что если, когда пользователь выходит из системы или не вошел в систему, он получает манифест только с сетью: *

...