multiple content-types break cgi.py

J

Janto Dreijer

Hi!

The Nokia Java SDK allows one to define multiple content-types in a
single HTTP header field. I'm not sure if it's standard, but it's
happening from some Java-enabled phones.

This breaks the FieldStorage class in cgi.py by not causing
self.read_urlencoded() to be called at object init. Specifically when
one gets a type value like 'text/plain, application/x-www-form-
urlencoded'.

Hacking one of the lines from:
if ctype == 'application/x-www-form-urlencoded':
self.read_urlencoded()
to
if 'application/x-www-form-urlencoded' in [s.strip() for s in
ctype.split(",")]:
self.read_urlencoded()
makes it work as expected.

The only reference to this "bug" I can find dates back to 1999:
http://tinyurl.com/3ahc3r

Regards
Janto
 
J

Jon Ribbens

The Nokia Java SDK allows one to define multiple content-types in a
single HTTP header field. I'm not sure if it's standard, but it's
happening from some Java-enabled phones.

The only reference to this "bug" I can find dates back to 1999:
http://tinyurl.com/3ahc3r

It's not a bug - sending multiple content-types is just totally broken.
What would such a header even be supposed to mean? It's like saying
"this is an apple orange".
 
M

Marc 'BlackJack' Rintsch

It's not a bug - sending multiple content-types is just totally broken.
What would such a header even be supposed to mean? It's like saying
"this is an apple orange".

And the correct header for such a beast would be "this is an iOrange" of
course. ;-)

SCNR,
Marc 'BlackJack' Rintsch
 
J

Janto Dreijer

It's not a bug - sending multiple content-types is just totally broken.
What would such a header even be supposed to mean? It's like saying
"this is an apple orange".

Hmmm. Thanks! I suspected as much.

Rough inspection suggests that calling
connection.setRequestProperty("Content-Type", "application/x-www-
form-urlencoded");
on the Nokia 6230 would actually cause the value to be *appended* and
not set.

Yuck! It looks like I'm going to have to keep a modified copy of
cgi.py if I want to support the phone. Or hack something on the Java
side.

Janto
 
J

Jon Ribbens

Hmmm. Thanks! I suspected as much.

Rough inspection suggests that calling
connection.setRequestProperty("Content-Type", "application/x-www-
form-urlencoded");
on the Nokia 6230 would actually cause the value to be *appended* and
not set.

If that method is inherited from java.net.URLConnection, then if the
phone is behaving as you suggest, its Java library is bugged and
behaving contrary to Sun's Java documentation.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,763
Messages
2,569,562
Members
45,038
Latest member
OrderProperKetocapsules

Latest Threads

Top