2011-02-07 3 views
1

Я разработал собственный пользовательский веб-сервер для робота, который я построил (video), не зная о тонкостях HTTP. Одна проблема, с которой я сталкиваюсь, - это отправить запрос от браузера, скажем, http://192.168.2.10/r?cmd=doStuff, и робот отвечает. Затем я снова отправляю тот же запрос из браузера (щелкнув по сохраненной закладке), и запрос никогда не погаснет, он просто показывает ответ от предыдущего запроса.Как заставить браузер останавливать ответы на кеширование сервера?

Вот что приходит из браузера (IE8 в частности):

GET /r?cmd=s HTTP/1.1 
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg,  application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */* 
Accept-Language: en-US 
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; InfoPath.2; .NET4.0C; .NET4.0E; Zune 4.7) 
Accept-Encoding: gzip, deflate 
Host: 192.168.2.10 
Connection: Keep-Alive 

Робот реагирует следующим образом:

HTTP/1.1 200 OK 
Content-Type: text/html; charset=UTF-8 
Server: The Little Robot That Could 1.0 
Date: Thu, 01 Jan 2009 00:05:00 GMT 
Content-Length: 4 
X-Powered-By: Little Robot HTTP Server 

мне нужно бросить какой-нибудь другой заголовок HTTP в миксе ли чтобы браузер не кэшировал ответ?

ответ

3

Да, вам нужен заголовок управления кешем.

Cache-Control: no-cache;max-age=0 
1

Я бы попытался бросить в Pragma: no-cache. Должен работать в любом современном браузере.

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

+1

прагма: no-cache устарел (http 1.0). он используется только из-за проблем с IE6 и старых прокси-серверов. «HTTP/1.1 кэши ДОЛЖНЫ относиться к« Pragma: no-cache », как если бы клиент отправил« Cache-Control: no-cache ». Никаких новых директив Pragma не будет определено в HTTP». – SpliFF

+0

К сожалению, я хотел указать, использовать если поддерживается IE6. Хорошо поймал. –

0

Ну.

действительный проблема здесь используется GET для «сделайте что-нибудь».