Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?

Re: Re: HTTP::Request::Common and multipart/form-data

by jerryodom (Initiate)
on Apr 08, 2003 at 15:05 UTC ( #248961=note: print w/replies, xml ) Need Help??

in reply to Re: HTTP::Request::Common and multipart/form-data
in thread HTTP::Request::Common and multipart/form-data

What needs to be different is that my browser and my program produce 2 very different outputs:

Broswer gives:

Content-Type: multipart/form-data; boundary=-------------------------- +7d32542f104c8

And program gives

Content-Type: multipart/form-data; boundary=xYzZY

See how the boundary field is so different. I want them to be the same. How can I do that in code?

Also.....the "xYzZY" boundary I'm getting. Wouldn't that imply that not a thing just happened? So something is wrong with the way I'm using this?

I'm confusing my little brain. Help a brother out!

Replies are listed 'Best First'.
Re3: HTTP::Request::Common and multipart/form-data
by bbfu (Curate) on Apr 08, 2003 at 17:58 UTC

    According to RFC1341, "xYzZY" is technically a legal boundary. The purpose of the boundary is to separate the parts of the message. Therefore, the only real requirement is that the boundary string does not appear anywhere in the message. That's why you usually see long strings of mixed alpha-numeric characters. The RFC even recommends using a string containing a string such as "=_" that can never appear in the message for the particular encoding. But as long as the message doesn't contain the boundary, however, everything will work fine.

    It just so happens that HTTP::Request::Common uses the following code specifically to ensure that the boundary does not appear anywhere in any of the form parts. It does this by actually checking to see if the boundary is in the part, and making a new boundary if it is.

    CHECK_BOUNDARY: { for (@parts) { if (index($_, $boundary) >= 0) { # must have a better boundary $boundary = boundary(++$bno); redo CHECK_BOUNDARY; } } last; }

    So, my long-winded point is, don't worry that the boundary string is different. It will work just fine the way it is. :)

    Update: It is also important to note that the boundary string sent by your browser will almost certainly be different every time it posts the form. This is because the boundary is usually a randomly generated string, often containing elements such as the current date and time to ensure uniqueness. So it would probably be next to impossible to get your code to give the exact same boundary as your browser, every time.

    Black flowers blossom
    Fearless on my breath

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://248961]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (6)
As of 2021-01-21 18:25 GMT
Find Nodes?
    Voting Booth?