Looking at the tomcat code, it seems pretty likely this is a Tomcat-specific issue.
-Ross On Feb 5, 2010, at 2:01 PM, Naftoli Gugenheim wrote: > If "any other proxy" includes nginx, then a lot of people! > > ------------------------------------- > chas<c...@munat.com> wrote: > > CRUD. Yes. Exactly what I'm trying to do, and Tomcat developers are making > it difficult. > > I can say that in Jetty 6, they are definitely passed. I don't know > whether they are being stripped in Tomcat deliberately (I hope not) or if > it's a bug. I plan to file a bug report anyway. > > I'm running Jetty directly (inside Maven), but my Tomcat container is > proxied via Apache 2, so it's remotely possible that Apache is stripping > the params out of the headers. But I doubt it. Still, if someone has Jetty > behind an Apache proxy (or any other proxy), it would be nice to know... > > Chas. > > >> Crud. >> >> Can someone do a survey of how other JVM web frameworks handle the PUT >> inconsistencies on different containers? >> >> On Fri, Feb 5, 2010 at 9:29 AM, Ross Mellgren <dri...@gmail.com> wrote: >> >>> Looking at the Tomcat code, this is explicit. From >>> org.apache.catalina.connector.Request: >>> >>> /** >>> * Parse request parameters. >>> */ >>> protected void parseParameters() { >>> ... >>> if (!getMethod().equalsIgnoreCase("POST")) >>> return; >>> ... >>> } >>> >>> -Ross >>> >>> On Feb 5, 2010, at 11:47 AM, Leo Lännenmäki wrote: >>> >>>> Hmpf. I have got the Tomcat PUT problem also. >>>> >>>> def statefulDispatchTable: LiftRules.DispatchPF = { >>>> ... >>>> case r...@req(List("api", "foo"), "", PutRequest) => () => >>>> update(req) >>>> ... >>>> } >>>> >>>> def update(req: Req): LiftResponse = { >>>> for (name <- req.paramNames) { >>>> Log.info(name) >>>> Log.info(req.param(name).openOr("empty")) >>>> } >>>> ... >>>> } >>>> >>>> >>>> On Jetty: >>>> 209467 [736850...@qtp-566947760-0] INFO lift - param >>>> 209467 [736850...@qtp-566947760-0] INFO lift - value >>>> 209476 [736850...@qtp-566947760-0] INFO lift - Service request >>>> (PUT) /api/foo took 17 Milliseconds >>>> >>>> curl -v -X PUT -d "param=value" -b JSESSIONID=v7a6qye5zusv >>>> http://localhost:8080/api/foo >>>> * About to connect() to localhost port 8080 (#0) >>>> * Trying ::1... connected >>>> * Connected to localhost (::1) port 8080 (#0) >>>>> PUT /api/foo HTTP/1.1 >>>>> User-Agent: curl/7.19.5 (x86_64-pc-linux-gnu) libcurl/7.19.5 >>> OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.15 >>>>> Host: localhost:8080 >>>>> Accept: */* >>>>> Cookie: JSESSIONID=v7a6qye5zusv >>>>> Content-Length: 49 >>>>> Content-Type: application/x-www-form-urlencoded >>>>> >>>> < HTTP/1.1 200 OK >>>> < Content-Length: 0 >>>> < Content-Type: text/html; charset=utf-8 >>>> < X-Lift-Version: 2.0-M1 >>>> < Server: Jetty(6.1.22) >>>> < >>>> * Connection #0 to host localhost left intact >>>> * Closing connection #0 >>>> >>>> >>>> >>>> On Tomcat: >>>> 170570 [http-8080-2] INFO lift - Service request (PUT) /api/foo took >>>> 12 Milliseconds >>>> >>>> curl -v -X PUT -d "param=value" -b >>>> JSESSIONID=68EE8A10FFBC2E5383FB9FD2821CF0E1 >>> http://localhost:8080/myserver/api/foo >>>> * About to connect() to localhost port 8080 (#0) >>>> * Trying ::1... connected >>>> * Connected to localhost (::1) port 8080 (#0) >>>>> PUT /api/foo HTTP/1.1 >>>>> User-Agent: curl/7.19.5 (x86_64-pc-linux-gnu) libcurl/7.19.5 >>> OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.15 >>>>> Host: localhost:8080 >>>>> Accept: */* >>>>> Cookie: JSESSIONID=68EE8A10FFBC2E5383FB9FD2821CF0E1 >>>>> Content-Length: 49 >>>>> Content-Type: application/x-www-form-urlencoded >>>>> >>>> < HTTP/1.1 200 OK >>>> < Server: Apache-Coyote/1.1 >>>> < X-Lift-Version: 2.0-M1 >>>> < Content-Type: text/html;charset=utf-8 >>>> < Content-Length: 0 >>>> < Date: Fri, 05 Feb 2010 16:28:23 GMT >>>> < >>>> * Connection #0 to host localhost left intact >>>> * Closing connection #0 >>>> >>>> >>>> On Feb 4, 10:47 pm, David Pollak <feeder.of.the.be...@gmail.com> >>>> wrote: >>>>> Sounds to me like a Tomcat issue... I think we're relying on the >>> container >>>>> to parse the body correctly. >>>>> >>>>> >>>>> >>>>> On Wed, Feb 3, 2010 at 9:15 PM, <c...@munat.com> wrote: >>>>>> It's POST vs. PUT. I'm using AJAX, so I can do PUTs. >>>>> >>>>>> The two are identical, except: >>>>> >>>>>> POST instead of PUT >>>>> >>>>>> The POST version includes: >>>>> >>>>>> Pragma: no-cache >>>>>> Cache-Control: no-cache >>>>> >>>>>> which the PUT does not. In other words, the headers are identical >>> except >>>>>> for the above. >>>>> >>>>>> In Jetty, no problem. In Tomcat, the params are ignored. They do not >>> show >>>>>> up in S.params. At all. >>>>> >>>>>> I can't imagine that this is a Lift issue, unless Tomcat makes >>> params >>>>>> available differently for PUTs than for POSTs, but Jetty does not, >>> and >>> I'm >>>>>> the first guy to do PUTs to Lift on Tomcat. But I've emailed the >>> Tomcat >>>>>> users list and we'll see if it's something simple. If not, I'll put >>>>>> something on GitHub. >>>>> >>>>>> Chas. >>>>> >>>>>>> Is it a POST or a GET? >>>>> >>>>>>> On Wed, Feb 3, 2010 at 11:44 PM, <c...@munat.com> wrote: >>>>> >>>>>>>> Thanks, David. >>>>> >>>>>>>> That's a non-trivial exercise for me, so let me chase down another >>> lead >>>>>>>> at >>>>>>>> the moment. If that proves fruitless, I'll bite the bullet and get >>>>>>>> something up on GitHub. >>>>> >>>>>>>> Chas. >>>>> >>>>>>>>> Please put together a reproduceable example on GitHub (works in >>> Jetty, >>>>>>>>> doesn't work in Tomcat) and we'll look at it. >>>>> >>>>>>>>> On Wed, Feb 3, 2010 at 11:48 AM, <c...@munat.com> wrote: >>>>> >>>>>>>>>> I have a lift app that works perfectly when I use mvn jetty:run. >>> Then >>>>>>>> I >>>>>>>>>> package it into a war and load it up in Tomcat 6 on the server, >>> and >>>>>>>> when >>>>>>>>>> I >>>>>>>>>> do, suddenly it won't work. >>>>> >>>>>>>>>> The issue is with the S.params. I have a form that submits via >>> an >>>>>>>> Ajax >>>>>>>>>> PUT >>>>>>>>>> request. The params are sent in the header just fine. As I said, >>>>>>>> works >>>>>>>>>> like a charm on Jetty. But when it gets to Tomcat, the entity is >>>>>>>> saved >>>>>>>>>> with blank attributes... i.e., everything worked but the >>>>>>>>>> S.param("whatever") showed up blank. I tested this by doing >>>>>>>>>> S.param("whatever").openOr("Phooey") and, indeed, that attribute >>> was >>>>>>>> set >>>>>>>>>> to "Phooey" on the new entity. >>>>> >>>>>>>>>> Tomcat issue? Or am I missing something obvious? This form is >>> running >>>>>>>> on >>>>>>>>>> a >>>>>>>>>> subdomain, so that's where I'm looking now (in server.xml). >>>>> >>>>>>>>>> TIA, >>>>>>>>>> Chas. >>>>> >>>>>>>>>> -- >>>>>>>>>> You received this message because you are subscribed to the >>> Google >>>>>>>>>> Groups >>>>>>>>>> "Lift" group. >>>>>>>>>> To post to this group, send email to lift...@googlegroups.com. >>>>>>>>>> To unsubscribe from this group, send email to >>>>>>>>>> liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com> >>> <liftweb%2bunsubscr...@googlegroups.com<liftweb%252bunsubscr...@googlegroups.com> >>>> >>>>>> <liftweb%2bunsubscr...@googlegroups.com<liftweb%252bunsubscr...@googlegroups.com> >>> <liftweb%252bunsubscr...@googlegroups.com<liftweb%25252bunsubscr...@googlegroups.com> >>>> >>>>> >>>>>>>> <liftweb%2bunsubscr...@googlegroups.com<liftweb%252bunsubscr...@googlegroups.com> >>> <liftweb%252bunsubscr...@googlegroups.com<liftweb%25252bunsubscr...@googlegroups.com> >>>> >>>>>> <liftweb%252bunsubscr...@googlegroups.com<liftweb%25252bunsubscr...@googlegroups.com> >>> <liftweb%25252bunsubscr...@googlegroups.com<liftweb%2525252bunsubscr...@googlegroups.com> >>>> >>>>> >>>>>>>>>> . >>>>>>>>>> For more options, visit this group at >>>>>>>>>> http://groups.google.com/group/liftweb?hl=en. >>>>> >>>>>>>>> -- >>>>>>>>> Lift, the simply functional web frameworkhttp://liftweb.net >>>>>>>>> Beginning Scalahttp://www.apress.com/book/view/1430219890 >>>>>>>>> Follow me:http://twitter.com/dpp >>>>>>>>> Surf the harmonics >>>>> >>>>>>>>> -- >>>>>>>>> You received this message because you are subscribed to the >>> Google >>>>>>>> Groups >>>>>>>>> "Lift" group. >>>>>>>>> To post to this group, send email to lift...@googlegroups.com. >>>>>>>>> To unsubscribe from this group, send email to >>>>>>>>> liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com> >>> <liftweb%2bunsubscr...@googlegroups.com<liftweb%252bunsubscr...@googlegroups.com> >>>> >>>>>> <liftweb%2bunsubscr...@googlegroups.com<liftweb%252bunsubscr...@googlegroups.com> >>> <liftweb%252bunsubscr...@googlegroups.com<liftweb%25252bunsubscr...@googlegroups.com> >>>> >>>>> >>>>>>>> . >>>>>>>>> For more options, visit this group at >>>>>>>>> http://groups.google.com/group/liftweb?hl=en. >>>>> >>>>>>>> -- >>>>>>>> You received this message because you are subscribed to the Google >>>>>>>> Groups >>>>>>>> "Lift" group. >>>>>>>> To post to this group, send email to lift...@googlegroups.com. >>>>>>>> To unsubscribe from this group, send email to >>>>>>>> liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com> >>> <liftweb%2bunsubscr...@googlegroups.com<liftweb%252bunsubscr...@googlegroups.com> >>>> >>>>>> <liftweb%2bunsubscr...@googlegroups.com<liftweb%252bunsubscr...@googlegroups.com> >>> <liftweb%252bunsubscr...@googlegroups.com<liftweb%25252bunsubscr...@googlegroups.com> >>>> >>>>> >>>>>>>> . >>>>>>>> For more options, visit this group at >>>>>>>> http://groups.google.com/group/liftweb?hl=en. >>>>> >>>>>>> -- >>>>>>> You received this message because you are subscribed to the Google >>> Groups >>>>>>> "Lift" group. >>>>>>> To post to this group, send email to lift...@googlegroups.com. >>>>>>> To unsubscribe from this group, send email to >>>>>>> liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com> >>> <liftweb%2bunsubscr...@googlegroups.com<liftweb%252bunsubscr...@googlegroups.com> >>>> >>>>>> . >>>>>>> For more options, visit this group at >>>>>>> http://groups.google.com/group/liftweb?hl=en. >>>>> >>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>> Groups >>>>>> "Lift" group. >>>>>> To post to this group, send email to lift...@googlegroups.com. >>>>>> To unsubscribe from this group, send email to >>>>>> liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com> >>> <liftweb%2bunsubscr...@googlegroups.com<liftweb%252bunsubscr...@googlegroups.com> >>>> >>>>>> . >>>>>> For more options, visit this group at >>>>>> http://groups.google.com/group/liftweb?hl=en. >>>>> >>>>> -- >>>>> Lift, the simply functional web frameworkhttp://liftweb.net >>>>> Beginning Scalahttp://www.apress.com/book/view/1430219890 >>>>> Follow me:http://twitter.com/dpp >>>>> Surf the harmonics >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>> Groups >>> "Lift" group. >>>> To post to this group, send email to lift...@googlegroups.com. >>>> To unsubscribe from this group, send email to >>> liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com> >>> . >>>> For more options, visit this group at >>> http://groups.google.com/group/liftweb?hl=en. >>>> >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups >>> "Lift" group. >>> To post to this group, send email to lift...@googlegroups.com. >>> To unsubscribe from this group, send email to >>> liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com> >>> . >>> For more options, visit this group at >>> http://groups.google.com/group/liftweb?hl=en. >>> >>> >> >> >> -- >> Lift, the simply functional web framework http://liftweb.net >> Beginning Scala http://www.apress.com/book/view/1430219890 >> Follow me: http://twitter.com/dpp >> Surf the harmonics >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Lift" group. >> To post to this group, send email to lift...@googlegroups.com. >> To unsubscribe from this group, send email to >> liftweb+unsubscr...@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/liftweb?hl=en. >> >> > > > -- > You received this message because you are subscribed to the Google Groups > "Lift" group. > To post to this group, send email to lift...@googlegroups.com. > To unsubscribe from this group, send email to > liftweb+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/liftweb?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "Lift" group. > To post to this group, send email to lift...@googlegroups.com. > To unsubscribe from this group, send email to > liftweb+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/liftweb?hl=en. > -- You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to lift...@googlegroups.com. To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/liftweb?hl=en.