![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||||||||
|
||||||||||
![]() Задавал вопрос на другом форуме, но никто не смог ответить, можут тут кто знает
![]() Для настройки кэширования, решил использовать параметр из HTTP запроса IfModifiedSince. Т.е. на сколько я понял, то в этом поле передается дата файла хранящегося в кэше браузера клиента. CGI-приложение, проверяет эту дату и дату файла хранящегося на сервере, и если даты не поменялись, то возвращает статус 304, и пустой поток. Периодически, при обращении к этому полю объекта Request Класса TWebRequest, приложение вылетает с ошибкой 500 Internal server error HTTP запрос выглядит вполне корректно: Код:
HTTP заголовок ответа: Код:
А вот содержимое ответа: Код HTML:
Сделал проверку, непосредственно в теле процедуры ответа: Код:
Содержимое лога вот такое: Код:
Т.е. поле IfModifiedSince, в TwebRequest, работает не правильно, не может преобразовать строку типа "Mon, 13 Mar 2017 16:00:46 GMT" в тип TDateTime Тогда вопрос: Как вытащить заголовок HTTP запроса? Я сам распарсю это поле, но как его получить? попробовал вытащить в виде строки значение этого поля Код:
возвращает всегда пустую строку, несмотря на то что в заголовке HTTP запроса этот параметр есть!!! Его видно в Firebug!! Попробовал получить значения других полей, нуу мало ли может не работает, класс то абстрактный. Значения полей "Connection", "Refer" и остальные возвращает нормально! |
#2
|
|||
|
|||
![]() Подсказали, где искать. Оказывается борланд несоклько по другому назвал эти поля. Они описаны в модуле CGIHTTP.pas
Код:
т.е. надо запрашивать не IF-MODIFIED-SINCE (что логично, т.к. в заголовке поле называется именно так), а вот HTTP_IF_MODIFIED_SINCE. тогда возвращается строка со значением этого поля. Нууу а дальше преобразовывай не хочу ![]() |