Кэш манифеста HTML5 за базовой аутентификацией? - PullRequest
7 голосов
/ 09 июня 2011

У меня есть сайт, который использует HTML5-кеширование и прекрасно работает.

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

Является ли частью спецификации HTML5, что страницы не кэшируются, если они защищены? Я не могу найти ссылку на это.

Кто-нибудь успешно создал защищенное паролем кешируемое приложение?

Я не уверен, что это браузер, но я тестирую в Safari - это приложение для iPad.

Заранее спасибо

Ответы [ 3 ]

5 голосов
/ 03 июля 2018

Это на самом деле вызвано CORS , поскольку браузер обрабатывает запрос как перекрестный источник.

Хорошим решением является добавление crossorigin='use-credentials' в определение манифеста, например так:

<link rel="manifest" crossorigin="use-credentials" href="/manifest.json">

После этого ваши учетные данные будут переданы в запрос манифеста.

Подробнее об этом параметре :: https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes

3 голосов
/ 11 октября 2011

Некоторые другие люди жаловались на ту же проблему в iOS 3.x и говорили, что перемещение файла манифеста за пределы каталога auth, похоже, исправляет некоторые вещи: http://lists.apple.com/archives/safari-iphone-web-dev/2010/Sep/msg00000.html

Мне удалось обойти проблему с файлом .htaccess в рассматриваемой папке, которая выглядела следующим образом:

AddType text/cache-manifest .manifest
<FilesMatch "your.manifest">
    Order Allow,Deny
    Allow from all
</FilesMatch>
1 голос
/ 21 сентября 2011

У меня была такая же проблема. Аутентификация сломала или отключила JS на странице, которая инициировала манифест кэша, когда мы запустили приложение в полноэкранном режиме с домашнего экрана.

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

Это запрашивает вход в систему, но не нарушает JS, выполняющий манифест кэша, поскольку он технически запрашивается на нашей «поддельной странице», хотя пользователь сразу же перенаправляется на правильную страницу, где затем успешно начинается загрузка его кэша.

Это похоже на ошибку в полноэкранном режиме мобильного Safari. Надеюсь, что такие вещи будут исправлены в будущем выпуске. Надеюсь, это поможет.


ОБНОВЛЕНИЕ: вышеприведенное исправление не сработало для нас, поскольку поддельная вводная страница не включена в манифест, поэтому она не загружается один раз в автономном режиме. облом в итоге мы просто запустили кеширование с мобильного сафари, поэтому любые сделанные обновления нужно делать через браузер, а не в полноэкранном режиме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...