Исправил строку заголовка запроса как указано выше, а поиск как указано
ниже.
Активность
ЧС и правила
БС не влияли на ответ - клиенту всегда отдавалось заданное в расширении.
Для исправления заменил
function AnswerSend() -- Выполняется при передаче ответа клиенту
-- Проверям отметку о блокировке, и если есть, то [+]
if re.find(hc.request_header, 'HandyCache/R-ext') then
-- изменяем заголовок ответа, с указанием типа контента
hc.answer_header = re.replace(hc.answer_header, [[.*]], 'HTTP/1.1 430 lock (R-ext)\r\nConnection: Close\r\nContent-Type: image/png\r\n\r\n')
-- задаём обработчик для подмены тела ответа
hc.call_me_for('BeforeAnswerBodySend', 'BodyExt')
end
на
следующееfunction AnswerSend() -- Выполняется при передаче ответа клиенту
-- Проверям отметку о блокировке [+]
if re.find(hc.request_header, 'HandyCache: R-ext') and
-- и заголовок ответа на "допустимость блокирования",
re.find(hc.answer_header, [[\AHTTP/1.1 (403 Forbidden|430 Blocked) \(HC\)]]) then
-- и если разрешено, то изменяем заголовок ответа с указанием типа контента
hc.answer_header = 'HTTP/1.1 430 lock (R-ext)\r\nConnection: Close\r\nContent-Type: image/png\r\n\r\n'
-- и задаём обработчик для подмены тела ответа
hc.call_me_for('BeforeAnswerBodySend', 'BodyExt')
end
* Если запрос блокируется правилом
ЧС, то при использовании в расширении события
@event RequestHeaderReceived
в колонку монитора
Ответ будет выдана строка, а клиенту будет отдан файл, заданные в расширении.
При использовании события
@event BeforeRequestHeaderSend
будут выданы соответсвующие данные
ЧС.