LINUX.ORG.RU

dillo кэширует(?) POST запрос.

 , ,


0

2

Есть esp32 на которой крутится веб-сервер, который подключён к локальной сети и позволяет включать/выключать лампочку. При подключении к веб-серверу, клиенту отправляется HTML-документ со следующим телом:

<body>                                                                                                                                             
  <form action='' method='POST'>
    /* 1|0 или on|off зависит от лампочки */
    <button value='1|0' name='switch'>                           
      on|off                                                                   
    </button>                                                                
  </form>                                                                                                                                       
</body>

Да и работает всё нормально, но не с dillo-браузером. Если подключиться через dillo, получится один раз включить лампочку, один раз выключить. После этого надпись на кнопке on|off меняется, но на веб-сервер ничего не отправляется (включена отладка со стороны сервера, все приходящие запросы видно).

Не могу понять, это проблема dillo браузера или можно как-то через http-заголовки сообщить браузеру, что так делать не надо?

Добавлял в ответ сервера заголовок:

Cache-Control: no-store, no-cache

Не помогло.

или можно как-то через http-заголовки сообщить браузеру, что так делать не надо?

Классика это добавлять рандомный мусор в URL, чтобы сделать его каждый раз уникальным. Например, UNIX time в миллисекундах

<form action="?cb=1751274797300"


Попробуй в ответе еще указать, что страница уже протухла.
Expires: Wed, 21 Oct 2015 07:28:00 GMT

urxvt ★★★★★
()
Ответ на: комментарий от urxvt

Например, UNIX time в миллисекундах

Да, этот вариант работает. Но, конечно, очень некрасивый…

Попробуй в ответе еще указать, что страница уже протухла.

Попробовал, указывал:

Expires: 0

Не работает.

Jullyfish
() автор топика
Ответ на: комментарий от vbr

Хотя покурил сорсы - никакого упоминания этого заголовка в исходниках нет. В общем беглый взгляд говорит о том, что он кеширует вообще всё. Поэтому двачую совет про добавление мусорного случайного параметра в URL, если dillo так важен.

23 года назад назад поддержку правильного кеширования пытались добавить, но авторам dillo угодить не удалось: https://lists.mailman3.com/hyperkitty/list/dillo-dev%40mailman3.com/thread/U6SR3VP6SDWHI6NDF2FQ5IN2BCAH2OKG/?sort=thread

vbr ★★★★★
()
Последнее исправление: vbr (всего исправлений: 3)

посылай сообщение на случайный адрес

<form action='?rnd=$randim' method='POST'>
а можешь в заголвке http говорить тело не кешировать, первый способ надёжнее

s-warus ★★★★
()
Последнее исправление: s-warus (всего исправлений: 2)

Чтож, я смог придумать более аккуратный костыль, не засоряя url. В форму просто добавил:

<input type='hidden' name='kek' value='$UNIXTIME' />

It just works…

Jullyfish
() автор топика