[Varnish] #250: POST error when using Opera
Varnish
varnish-bugs at projects.linpro.no
Thu Jun 12 17:42:29 CEST 2008
#250: POST error when using Opera
--------------------+-------------------------------------------------------
Reporter: duja | Owner: des
Type: defect | Status: new
Priority: normal | Milestone: Varnish 2.0 release
Component: build | Version: trunk
Severity: normal | Keywords:
--------------------+-------------------------------------------------------
Info from mailing list:
What I have is a form login that has 3 input fields, username, password
and security code (from captcha).
When opera is making the POST it receives a 200 OK and NOT a 302 Moved
Temp. as expected.
This is the request that Opera is making:
13 RxRequest c POST
13 RxURL c /takelogin.php
13 RxProtocol c HTTP/1.1
13 RxHeader c User-Agent: Opera/9.27 (Windows NT 5.1; U; sv)
13 RxHeader c Host: mydomain.com:8080
13 RxHeader c Accept: text/html, application/xml;q=0.9,
application/xhtml+xml, image/png, image/jpeg, image/gif,
image/x-xbitmap, */*;q=0.1
13 RxHeader c Accept-Language: sv-SE,sv;q=0.9,en;q=0.8
13 RxHeader c Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
13 RxHeader c Accept-Encoding: deflate, gzip, x-gzip, identity,
*;q=0
13 RxHeader c Referer: http://mydomain.com:8080/login.php
13 RxHeader c Cookie: PHPSESSID=f3a60f178adede632c761dca745054cf
13 RxHeader c Cookie2: $Version=1
13 RxHeader c Connection: Keep-Alive, TE
13 RxHeader c TE: deflate, gzip, chunked, identity, trailers
13 RxHeader c Content-Length: 63
13 RxHeader c Content-Type: application/x-www-form-urlencoded
My vcl has this code when POST are received:
if(req.request != "GET" && req.request != "HEAD") {
set req.http.Connection = "close";
pass;
}
This code usually works with FF and IE but NOT with Opera.
If I remove "set req.http.Connection = "close";"
the login process works with no problem.
I have had problems with POSTs before, thats why I've been using
Connection = "close" on POSTs.
Here is the whole error log:
0 CLI - Rd ping
0 CLI - Wr 0 200 PONG 1213029670
13 SessionClose - timeout
13 StatSess - 82.182.xx.xx 1306 0 1 2 0 0 2 744 6750
0 CLI - Rd ping
0 CLI - Wr 0 200 PONG 1213029673
13 SessionOpen c 82.182.xx.xx 1307 0.0.0.0:8080
13 ReqStart c 82.182.xx.xx 1307 803913450
13 RxRequest c POST
13 RxURL c /takelogin.php
13 RxProtocol c HTTP/1.1
13 RxHeader c User-Agent: Opera/9.27 (Windows NT 5.1; U; sv)
13 RxHeader c Host: mydomain.com:8080
13 RxHeader c Accept: text/html, application/xml;q=0.9,
application/xhtml+xml, image/png, image/jpeg, image/gif,
image/x-xbitmap, */*;q=0.1
13 RxHeader c Accept-Language: sv-SE,sv;q=0.9,en;q=0.8
13 RxHeader c Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
13 RxHeader c Accept-Encoding: deflate, gzip, x-gzip, identity,
*;q=0
13 RxHeader c Referer: http://mydomain.com:8080/login.php
13 RxHeader c Cookie: PHPSESSID=f3a60f178adede632c761dca745054cf
13 RxHeader c Cookie2: $Version=1
13 RxHeader c Connection: Keep-Alive, TE
13 RxHeader c TE: deflate, gzip, chunked, identity, trailers
13 RxHeader c Content-Length: 63
13 RxHeader c Content-Type: application/x-www-form-urlencoded
13 VCL_call c recv
13 VCL_return c pass
13 VCL_call c pass
13 VCL_return c pass
14 TxRequest - POST
14 TxURL - /takelogin.php
14 TxProtocol - HTTP/1.1
14 TxHeader - User-Agent: Opera/9.27 (Windows NT 5.1; U; sv)
14 TxHeader - Host: mydomain.com:8080
14 TxHeader - Accept: text/html, application/xml;q=0.9,
application/xhtml+xml, image/png, image/jpeg, image/gif,
image/x-xbitmap, */*;q=0.1
14 TxHeader - Accept-Language: sv-SE,sv;q=0.9,en;q=0.8
14 TxHeader - Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
14 TxHeader - Accept-Encoding: deflate, gzip, x-gzip, identity,
*;q=0
14 TxHeader - Referer: http://mydomain.com:8080/login.php
14 TxHeader - Cookie: PHPSESSID=f3a60f178adede632c761dca745054cf
14 TxHeader - Cookie2: $Version=1
14 TxHeader - Content-Type: application/x-www-form-urlencoded
14 TxHeader - X-Varnish: 803913450
14 TxHeader - X-Forwarded-For: 82.182.xx.xx
14 RxProtocol - HTTP/1.1
14 RxStatus - 200
14 RxResponse - OK
14 RxHeader - Date: Mon, 09 Jun 2008 16:41:14 GMT
14 RxHeader - Server: Apache
14 RxHeader - X-Powered-By: PHP/5.2.0-8+etch10
14 RxHeader - Content-Length: 23
14 RxHeader - Content-Type: text/html; charset=UTF-8
13 ObjProtocol c HTTP/1.1
13 ObjStatus c 200
13 ObjResponse c OK
13 ObjHeader c Date: Mon, 09 Jun 2008 16:41:14 GMT
13 ObjHeader c Server: Apache
13 ObjHeader c X-Powered-By: PHP/5.2.0-8+etch10
13 ObjHeader c Content-Type: text/html; charset=UTF-8
14 BackendReuse - mydomain
13 TTL c 803913450 RFC 120 1213029674 1213029674 0 0 0
13 VCL_call c fetch
13 VCL_return c pass
13 Length c 23
13 VCL_call c deliver
13 VCL_return c deliver
13 TxProtocol c HTTP/1.1
13 TxStatus c 200
13 TxResponse c OK
13 TxHeader c Server: Apache
13 TxHeader c X-Powered-By: PHP/5.2.0-8+etch10
13 TxHeader c Content-Type: text/html; charset=UTF-8
13 TxHeader c Content-Length: 23
13 TxHeader c Date: Mon, 09 Jun 2008 16:41:14 GMT
13 TxHeader c X-Varnish: 803913450
13 TxHeader c Age: 0
13 TxHeader c Via: 1.1 varnish
13 TxHeader c Connection: keep-alive
13 ReqEnd c 803913450 1213029674.708000898 1213029674.780754805
0.003840923 0.072657347 0.000096560
0 StatAddr - 82.182.xx.xx 0 76 14 47 0 0 30 12274 157175
# varnishd -V
varnishd (varnish-trunk)
Copyright (c) 2006-2008 Linpro AS / Verdens Gang AS
What I should mention is that the problem can be solved by another method.
If I remove the Cookie2 AND TE header it all works out fine:
remove req.http.Cookie2;
remove req.http.TE;
if(req.request != "GET" && req.request != "HEAD") {
set req.http.Connection = "close";
pass;
}
This works!
But I must remove BOTH Cookie2 and TE header, else it wont work.
* I will add more info from varnishlog as soon as Im home
--
Ticket URL: <http://varnish.projects.linpro.no/ticket/250>
Varnish <http://varnish.projects.linpro.no/>
The Varnish HTTP Accelerator
More information about the varnish-bugs
mailing list