[fpc-pascal] Premature end of headers using fcl-web and POST
Michael Van Canneyt
michael at freepascal.org
Tue Nov 1 11:09:14 CET 2011
On Tue, 1 Nov 2011, Ludo Brands wrote:
>> On Tue, Nov 1, 2011 at 9:04 AM, Ludo Brands
>> <ludo.brands at free.fr> wrote:
>>> Note the "per the HTML specs". HTTP specs aren't that strict.
>>
>> But what exaxtly do these specs ban? Because I am sending via
>> XMLHttpRequest in JavaScript, and there you can specify any
>> mime-type that you want. You can send any data and I haven't
>> seen any restriction related to the mime-type so far.
>> Probably this restrictions don't apply to JavaScript but only
>> to form data and things like that (purely in HTML)?
>>
>
> Yes. The HTML spec defines the use of these 2 MIME types for a user agent
> uploading a form. XMLHttpRequest, as the name indicates, isn't limited to
> HTML.
>
>> Not to mention that a CGI application can also communicate
>> with native clients, not only HTML pages, and the native
>> client is not subject to HTML rules.
>>
>
> There are plenty of applications using http as a communication channel and
> that have nothing to do with html.
All this is correct, but the primary function of HTTP remains the transport
of web-pages. fcl-web was/is geared towards that.
That said, it's of course not so that fcl-web should restrict itself to HTML.
I will look into having an event or so to handle unknown encodings.
For the time being, you can do the following:
1. create a descendent of TRequest (actually TCGIRequest) and override InitPostVars.
2. Then create a TCGIHandler descendent to override TCgiHandler.CreateRequest to
instantiate your TCGIRequest descendant
3. Make a descendent of TCustomCGIApplication that overrides InitializeWebHandler
which instantiates your TCGIHandler descendent. Use that descendent as your application object.
A bit cumbersome, but it gets the job done. (I had to do it myself on one particular occasion).
I'll look into making it a bit easier to do. (including the event to handle unknown encodings)
Michael.
More information about the fpc-pascal
mailing list