499 errors in IE9 causing order duplicates
Maxim Dounin
mdounin at mdounin.ru
Tue Oct 26 22:42:04 MSD 2010
Hello!
On Tue, Oct 26, 2010 at 09:48:23AM -0400, Paleo Tek wrote:
> We use nginx to reverse proxy to a farm of apache servers. It
> rocks. But we've noticed that Internet Explorer 9 has been
> generating duplicate orders. It does not happen every time, but
> often enough. It appears to be an IE 9 issue, but I'm hoping the
> experts here can confirm my theory:
>
> A request comes from an IE 9 client. Nginx passes the request to an
> upstream apache server. For some reason, the IE 9 browser closes
> the connection before the apache server returns results with return
> code 200. Nginx sees a closed connection, and generates a 499 error
> (client problem, connection closed). IE 9 sees that, and
> immediately re-sends the request. Nginx forwards to apache,
> receives the response, and forward to the client, logging a 200.
> Log results are below
IE can't "see" 499 as it's logged after client already closed
connection. It's IE who closed connection (which is logged with
499 fake code) and re-issued request. Most likely reason - user
hit "Submit" button two times (so on second click IE aborted first
request and issued another one).
This problems isn't nginx and/or IE specific, though may show in
logs slightly differently depending on exact borwser and/or server
behaviour.
Usual methods to prevent it from happening - either use javascript
to disable submit button, or use some token in form and filter
duplicates at server side, see e.g. [1].
[1] http://stackoverflow.com/questions/414835/avoid-race-conditions-in-php-on-submit-please-do-not-click-submit-more-than-once
Maxim Dounin
More information about the nginx
mailing list