Как избежать запроса с кодом состояния 304, возвращенного в Chrome? - PullRequest
0 голосов
/ 02 марта 2012

У меня есть html-страница, и я добавлю несколько метатегов, например:

<meta http-equiv="Cache-Control" Content="public" />
<meta http-equiv="Expires" Content="Mon, 08 Jun 2013 03:37:26 GMT" />

Мой сервер - tomcat, после того как эта HTML-страница была кэширована в клиентских браузерах, я выключил свой tomcat.

А потом я попытался открыть эту HTML-страницу в разных браузерах.

IE может получить доступ к этой странице успешно, но Chrome не удалось.

А потом я перезапустил свой кот и сделал тест в Chrome и IE.

Я обнаружил, что Chrome по-прежнему отправляет запрос с возвращенным кодом 304, но IE не отправляет этот запрос.

Так как же избежать этого запроса в Chrome?

1 Ответ

0 голосов
/ 02 марта 2012

На самом деле я не думаю, что это ошибка. 3xx обозначает перенаправление. Настоящие ошибки: 4xx (ошибка клиента) и 5xx (ошибка сервера).

Если клиент получает 304 Не изменено , то клиент несет ответственность за отображение рассматриваемого ресурса из своего собственного кэша. В общем, прокси не должен беспокоиться об этом. Это просто посланник.

catch (WebException ex)
{


    if (ex.Status == WebExceptionStatus.ProtocolError)
    {
        int statusCode = (int) ((HttpWebResponse) ex.Response).StatusCode;
        listenerContext.Response.StatusCode = statusCode;
        listenerContext.Response.StatusDescription = ex.Message;
        log("WARNING", uri, "WebException/ProtocolError: " + ex.GetType() + " - " + ex.Message);
    }
    else
    {
        log("ERROR", uri, "WebException - " + ex.GetType() + " - " + ex.Message);

    }

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