- From: Julian Reschke <julian.reschke@gmx.de>
- Date: Fri, 26 Oct 2007 23:11:00 +0200
- To: Ian Hickson <ian@hixie.ch>
- CC: HTML WG <public-html@w3.org>
Ian Hickson wrote: > POST is "unsafe" because invoking the method is allowed to have > side-effects, like charging money, whereas GET requests are safe because > they are supposed to be idempotent, meaning that no side-effects are > supposed to happen. And thus the UA never ever should invoke POST without the consent of the user. > In the case of ping="", a major use case is informing a site when a > sponsored link is followed, to enable the site to transfer money with a > third party. This is a side-effect, and can only happen if the request is > not an idempotent (GET, HEAD) request. POST is the most appropriate method > for this use case. That's incorrect. GET and HEAD can have any side effects you want, as long as they do not affect the party issuing the POST. Citing <http://greenbytes.de/tech/webdav/rfc2616.html#rfc.section.9.1.1>: "The important distinction here is that the user did not request the side-effects, so therefore cannot be held accountable for them." > What do you think are the risks of using POST? There are some, as with GET/HEAD. Due to the nature of POST, the effects may be more grave -- as you just cited ("charging money"). I personally think that the attribute in itself is a Very Bad Idea, but if it stays in, by all means do not use POST for it. BTW: I just checked, and the Google Ads on www.google.de work with GET and a Redirect (302). Only safe methods from the user's point of view. Are you saying this is a problem? >> The spec continues with: >> >> "When the ping attribute is present, user agents should clearly indicate >> to the user that following the hyperlink will also cause secondary >> requests to be sent in the background, possibly including listing the >> actual target URIs." >> >> This is good, but it's probably not clear enough -- at least FF3 is >> ignoring this. > > It's not clear to me how to make it clearer. You could say "must" instead of "should", for a start. You could also propose one acceptable way to fulfill that requirement. > In the case of Firefox 3, the developers were very aware of the above > requirement, as well as its implications, and intentionally decided to > violate the SHOULD for the time being. It isn't clear to me that there is > anything I could do to the _spec_ to change their mind. (It's not like > they just missed the above paragraph or didn't understand it.) Well, they ignored it, yet made the functionality the default. It's a very clear signal that we have a problem here. Best regards, Julian
Received on Friday, 26 October 2007 21:11:16 UTC