On Dec 1, 2014, at 12:50 PM, Ned Batchelder <n...@nedbatchelder.com> wrote:
> On 12/1/14 4:26 PM, Tim Chase wrote: >> On 2014-12-01 11:28, Israel Brewster wrote: >>> I don't know if this is a cherrypy specific question (although it >>> will be implemented in cherrypy for sure), or more of a general >>> http protocol question, but when using cherrypy to serve a web app, >>> is there anyway to prevent browser prefetch? I'm running to a >>> problem, specifically from Safari on the Mac, where I start to type >>> a URL, and Safari auto-fills the rest of a random URL matching what >>> I started to type, and simultaneously sends a request for that URL >>> to my server, occasionally causing unwanted effects. >> >> All this to also say that performing non-idempotent actions on a GET >> request is just begging for trouble. ;-) >> > > This is the key point: your web application shouldn't be doing these kinds of > actions in response to a GET request. Make them POST requests, and Safari > won't give you any trouble. > > Trying to stop Safari from making the GET requests might work for Safari, but > then you will find another browser, or a proxy server, or an edge-caching > accelerator, etc, that makes the GET requests when you don't want them. > > The way to indicate to a browser that it shouldn't pre-fetch a URL is to make > it a POST request. Ok, that makes sense. The only difficulty I have with that answer is that to the best of my knowledge the only way to make a HTML link do a POST is to use the onclick function to run a javascript, while having the "link" itself point to nothing. Just feels a bit ugly to me, but if that's the Right Way™ to do it, then that's fine. Thanks! > > -- > Ned Batchelder, http://nedbatchelder.com > > -- > https://mail.python.org/mailman/listinfo/python-list ----------------------------------------------- Israel Brewster Systems Analyst II Ravn Alaska 5245 Airport Industrial Rd Fairbanks, AK 99709 (907) 450-7293 ----------------------------------------------- -- https://mail.python.org/mailman/listinfo/python-list