[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