Вот ситуация:
У меня есть веб-приложение, которое отвечает на запрос списка ресурсов, скажем:
/items
Первоначально это запрашивается непосредственно веб-браузером при переходе по этому пути. Браузер использует стандартный заголовок «Принять», который включает «текст/html», и мое приложение замечает это и возвращает содержимое HTML для списка элементов.
В возвращенном HTML есть некоторый JavaScript (jQuery), который затем выполняет запрос ajax для получения фактических данных:
/items
Только на этот раз заголовок «Accept» явно установлен на «application/json». Опять же, мое приложение это замечает и в запрос корректно возвращается JSON, данные вставляются в страницу, и все устраивает.
Вот и возникает проблема: пользователь переходит на другую страницу, а затем нажимает кнопку НАЗАД. Затем им будет предложено сохранить файл. Оказывается, это данные JSON списка элементов.
До сих пор я подтверждал, что это происходит как в Google Chrome, так и в Firefox 3.5.
Здесь возможны два типа ответов:
Как я могу исправить проблему. Есть ли какая-то волшебная комбинация заголовков Cache-Control или другое колдовство, которое заставляет браузер делать правильные вещи здесь?
Если вы думаете, что я делаю что-то ужасно неправильное, что мне делать? Я ищу правильность, но также стараюсь не жертвовать гибкостью.
Если это поможет, приложение представляет собой веб-приложение JAX-RS, использующее Restlet 2.0m4. Я могу предоставить образцы заголовков запроса/ответа, если это полезно, но я считаю, что проблема полностью воспроизводима.