HttpWebRequest не включает заголовок «Pragma: no-cache» при выполнении POST - PullRequest
0 голосов
/ 18 ноября 2009

Я использую HttpWebRequest с CachePolicy, равным HttpRequestCacheLevel.Reload . При выполнении GET заголовок «Pragma: no-cache» находится в запросе (как отслеживается через Fiddler). Но при выполнении точно такого же запроса с использованием POST заголовок "Pragma: no-cache" не включается.

Есть ли причина для этого? Это ошибка? И есть ли обходной путь?

Спасибо.

РЕДАКТИРОВАТЬ: Просто чтобы быть яснее о моей цели. Я хочу, чтобы мой POST-запрос был выполнен с использованием HttpWebRequest, чтобы включить заголовок «Pragma: no-cache», независимо от того, требуется он или нет. Я думал, что установка HttpWebRequest.CachePolicy для перезагрузки в одиночку сделает это. Причина в том, что мне это нужно, потому что сайт, к которому я обращаюсь, выполняет некоторые проверки для этого заголовка и ожидает его.

1 Ответ

1 голос
/ 18 ноября 2009

HTTP позволяет разрешить кэширование ответа на запрос POST. От RFC2616 , раздел 9,5;

Ответы на этот метод не кэшируются, если ответ включает в себя соответствующие поля заголовка Cache-Control или Expires. Тем не мение, ответ 303 (см. «Другое») может использоваться для направления пользовательского агента получить кешируемый ресурс.

Это означает, что если ответ POST включает в себя Cache-Control или Expires (или, учитывая строгое чтение раздела 13, даже валидатор, такой как Last-Modified или ETag), ответ может использоваться для удовлетворения будущих запросов GET. 1

Поскольку POST не отправляет без кэширования , по умолчанию ответ не будет кэшироваться. Отправлять политику кэширования нужно только в том случае, если вы хотите, чтобы ответ поста был кэшируемым.

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