lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On 2/1/06, Keith Howe <nezroy@gmail.com> wrote:
>  On 2/1/06, William Trenker <wtrenker@gmail.com> wrote:
> > However, if I add the additional header:
> >          ["Content-Type"] =  "application/x-www-form-urlencoded"
> > then I get the output "a = 1" indicating the server has now seen the POST body.
> >
> > Any thoughts?
>
> I'm not exactly sure what the issue is here, as this seems correct to
> me. Without the content-type specified, the web server (and therefore
> PHP script) has no way to interpret the data you are sending in the
> POST body, and its safest option is to simply ignore it entirely. It
> is perfectly legal HTTP to send data in a POST body that is not
> x-www-form-urlencoded, so this header is required if you expect it to
> be interpreted as form data in label=value pairs.

 That's what I thought, too.  Yet I can't get this to work without the
"Content-Type" header.  A quick inspection of the Python urllib2.py
module (includes functionality similar to LuaSocket's
socket.http.request) seems to indicate that the Content-Type header is
needed:

         if req.has_data():
             data = req.get_data()
             h.putrequest('POST', req.get_selector())
             if not 'Content-type' in req.headers:
                 h.putheader('Content-type',
                             'application/x-www-form-urlencoded')
             if not 'Content-length' in req.headers:
                 h.putheader('Content-length', '%d' % len(data))
         else:
             h.putrequest('GET', req.get_selector())

 Bill