Getting HTTP Headers from CGI program

Getting HTTP Headers from CGI program

am 31.12.2009 02:44:50 von Tushar Joshi

Hi,

I'm trying to get a HTTP header from my CGI program, in this particular
example it's SOAPAction, however I'm not sure how to do this as you can
only getenv some of the headers. Is there a way to get all the headers
sent from the client or a way in maybe the apache config to set the
environment variable manually. I've lookever all over for this and
couldn't find anything so either it's dead easy or I have to write an
apache module to do this?

Cheers if you can shed any light on this one,


Tushar

------------------------------------------------------------ ---------
The official User-To-User support forum of the Apache HTTP Server Project.
See for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
" from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org

Re: Getting HTTP Headers from CGI program

am 31.12.2009 15:23:49 von aw

Tushar Joshi wrote:
> Hi,
>
> I'm trying to get a HTTP header from my CGI program, in this particular
> example it's SOAPAction, however I'm not sure how to do this as you can
> only getenv some of the headers. Is there a way to get all the headers
> sent from the client or a way in maybe the apache config to set the
> environment variable manually. I've lookever all over for this and
> couldn't find anything so either it's dead easy or I have to write an
> apache module to do this?
>
> Cheers if you can shed any light on this one,
>
What is your CGI program written in ? (language)

------------------------------------------------------------ ---------
The official User-To-User support forum of the Apache HTTP Server Project.
See for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
" from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org

Re: Getting HTTP Headers from CGI program

am 31.12.2009 16:08:43 von Tushar Joshi

Hi thanks for the reply. I'm writing my applications in C so would =20
have thought there might be a low level way of doing this.


Turtle Networks

Tel +44 (0)20 8896 2600
www.turtle.net
Unit 48
Concord Road
London W3 0TH

On 31 Dec 2009, at 14:23, André Warnier wrote:

> Tushar Joshi wrote:
>> Hi, I'm trying to get a HTTP header from my CGI program, in this =20
>> particular
>> example it's SOAPAction, however I'm not sure how to do this as you =20=

>> can
>> only getenv some of the headers. Is there a way to get all the =20
>> headers
>> sent from the client or a way in maybe the apache config to set the
>> environment variable manually. I've lookever all over for this and
>> couldn't find anything so either it's dead easy or I have to write an
>> apache module to do this?
>> Cheers if you can shed any light on this one,
> What is your CGI program written in ? (language)
>
> ------------------------------------------------------------ ---------
> The official User-To-User support forum of the Apache HTTP Server =20
> Project.
> See for more info.
> To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
> " from the digest: users-digest-unsubscribe@httpd.apache.org
> For additional commands, e-mail: users-help@httpd.apache.org
>

------------------------------------------------------------ ---------
The official User-To-User support forum of the Apache HTTP Server Project.
See for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
" from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org

Re: Getting HTTP Headers from CGI program

am 31.12.2009 16:23:32 von aw

Tushar Joshi wrote:
> Hi thanks for the reply. I'm writing my applications in C so would have
> thought there might be a low level way of doing this.
>
I was asking, just in case you were using Perl. I would then have
pointed you to mod_perl and the CGI module, which together allow you to
do that kind of thing easily.

But, in general, if this is a CGI program, then it is running as a
separate process from Apache itself, and it does not have access to
Apache internals.
What your program gets is the CGI environment as set up by Apache, but
you do not get all the HTTP request headers that way (only some are
"translated" by Apache as environment variables for your CGI program).

It would be different if your application, instead of a CGI program, was
written as an Apache add-on module. That is possible, but I cannot help
you there (other than with Perl).

There may be a possibility however, by using one of the existing Apache
modules as a filter, which would take the content of a HTTP request
header and turn it into an environment variable which your CGI could
then see.
I cannot give you any specifics, but I would look at modules such as
mod_setenvif, mod_headers, mod_rewrite.
I would start the search here :
http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html#seten vif

Be a bit careful however when you see words like "environment
variables". These words do not necessarily have the meaning
"environment variables for CGI programs".


------------------------------------------------------------ ---------
The official User-To-User support forum of the Apache HTTP Server Project.
See for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
" from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org

Re: Getting HTTP Headers from CGI program

am 31.12.2009 16:47:14 von Scott Gifford

Andr=E9 Warnier writes:

> Tushar Joshi wrote:
>> Hi thanks for the reply. I'm writing my applications in C so would
>> have thought there might be a low level way of doing this.

[...]

> But, in general, if this is a CGI program, then it is running as a
> separate process from Apache itself, and it does not have access to
> Apache internals.
> What your program gets is the CGI environment as set up by Apache, but
> you do not get all the HTTP request headers that way (only some are
> "translated" by Apache as environment variables for your CGI
> program).

It would be fairly straightforward to copy additional information from
Apache to the environment with a little bit of mod_perl or a simple
module, to make it available to CGI scripts.

----Scott.

------------------------------------------------------------ ---------
The official User-To-User support forum of the Apache HTTP Server Project.
See for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
" from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org

Re: Getting HTTP Headers from CGI program

am 31.12.2009 17:15:58 von aw

Scott Gifford wrote:
> André Warnier writes:
>
>> Tushar Joshi wrote:
>>> Hi thanks for the reply. I'm writing my applications in C so would
>>> have thought there might be a low level way of doing this.
>
> [...]
>
>> But, in general, if this is a CGI program, then it is running as a
>> separate process from Apache itself, and it does not have access to
>> Apache internals.
>> What your program gets is the CGI environment as set up by Apache, but
>> you do not get all the HTTP request headers that way (only some are
>> "translated" by Apache as environment variables for your CGI
>> program).
>
> It would be fairly straightforward to copy additional information from
> Apache to the environment with a little bit of mod_perl or a simple
> module, to make it available to CGI scripts.
>
Allright, how ? We're all ears.
If the OP does not use mod_perl right now, and this being the day which
it is, I cannot for myself think of a quickie solution for the next 24
hours or so...
;-)
Happy New Year.

------------------------------------------------------------ ---------
The official User-To-User support forum of the Apache HTTP Server Project.
See for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
" from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org

Re: Getting HTTP Headers from CGI program

am 31.12.2009 17:20:05 von Nick Kew

On 31 Dec 2009, at 01:44, Tushar Joshi wrote:

>
> Hi,
>
> I'm trying to get a HTTP header from my CGI program, in this particular
> example it's SOAPAction, however I'm not sure how to do this as you can
> only getenv some of the headers.

Erm, it seems neither you nor several who have responded have read TFM.

What header can't you get?

--
Nick Kew

------------------------------------------------------------ ---------
The official User-To-User support forum of the Apache HTTP Server Project.
See for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
" from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org

Re: Getting HTTP Headers from CGI program

am 31.12.2009 18:31:32 von Tushar Joshi

On 31 Dec 2009, at 16:20, Nick Kew wrote:

>
> On 31 Dec 2009, at 01:44, Tushar Joshi wrote:
>
>>
>> Hi,
>>
>> I'm trying to get a HTTP header from my CGI program, in this
>> particular
>> example it's SOAPAction, however I'm not sure how to do this as you
>> can
>> only getenv some of the headers.
>
> Erm, it seems neither you nor several who have responded have read
> TFM.
>
> What header can't you get?
>
> --
> Nick Kew

Right bottom posting this time. I've looked in the manual searched on
the web but I presume there isn't an easy way. I've looked at mod
header and set env and I don't really want to add a perl wrapper to a
lovely C program. I was hoping I could do something like getenv
("HEADERS_REMAINING") or I could write an apache module to grab the
SOAPAction header and set it in an environment variable.

------------------------------------------------------------ ---------
The official User-To-User support forum of the Apache HTTP Server Project.
See for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
" from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org

Re: Getting HTTP Headers from CGI program

am 31.12.2009 18:59:09 von Eric Covener

On Thu, Dec 31, 2009 at 12:31 PM, Tushar Joshi wrote:
> was hoping I could do something like getenv("HEADERS_REMAINING") or I could
> write an apache module to grab the SOAPAction header and set it in an
> environment variable.

http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html#seten vif (or
mod_rewrite with E= flag)


--
Eric Covener
covener@gmail.com

------------------------------------------------------------ ---------
The official User-To-User support forum of the Apache HTTP Server Project.
See for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
" from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org

Re: Getting HTTP Headers from CGI program

am 31.12.2009 19:45:51 von Nick Kew

On 31 Dec 2009, at 17:31, Tushar Joshi wrote:
>
> Right bottom posting this time. I've looked in the manual searched on the web but I presume there isn't an easy way. I've looked at mod header and set env and I don't really want to add a perl wrapper to a lovely C program. I was hoping I could do something like getenv("HEADERS_REMAINING") or I could write an apache module to grab the SOAPAction header and set it in an environment variable.

If SOAPAction is an HTTP header, I suggest looking at the CGI spec
(which is very, very simple) for how to get it.

--
Nick Kew

------------------------------------------------------------ ---------
The official User-To-User support forum of the Apache HTTP Server Project.
See for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
" from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org

Re: Getting HTTP Headers from CGI program

am 02.01.2010 12:42:10 von Tushar Joshi

On Thu, Dec 31, 2009 at 06:45:51PM +0000, Nick Kew wrote:
>
> On 31 Dec 2009, at 17:31, Tushar Joshi wrote:
> >
> > Right bottom posting this time. I've looked in the manual searched on the web but I presume there isn't an easy way. I've looked at mod header and set env and I don't really want to add a perl wrapper to a lovely C program. I was hoping I could do something like getenv("HEADERS_REMAINING") or I could write an apache module to grab the SOAPAction header and set it in an environment variable.
>
> If SOAPAction is an HTTP header, I suggest looking at the CGI spec
> (which is very, very simple) for how to get it.
>

I've had a look and SOAPAction seems to be an extension maybe of some
sort as listed here

http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383528

It just doesn't seem like apache has a way of getting the value of this
header easily. I've had a look at using mod_header/setenvif but I'm
hoping to have about 100 different values for SOAPAction. It seems I can
write an apache module to maybe do this:

HTTPHeader SOAPAction

Which will convert the SOAPAction header to an environment variable
HTTPHeader_SOAPAction and maybe the prefix can be defined as well.

Tushar

------------------------------------------------------------ ---------
The official User-To-User support forum of the Apache HTTP Server Project.
See for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
" from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org

Re: Getting HTTP Headers from CGI program

am 02.01.2010 13:57:05 von Eric Covener

On Sat, Jan 2, 2010 at 6:42 AM, Tushar Joshi wrote:

> I've had a look and SOAPAction seems to be an extension maybe of some
> sort as listed here
>
> http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383528
>
> It just doesn't seem like apache has a way of getting the value of this
> header easily.

The CGI spec Nick is pointing you to says arbitrary headers are
already available in the env as HTTP_$headername.

--
Eric Covener
covener@gmail.com

------------------------------------------------------------ ---------
The official User-To-User support forum of the Apache HTTP Server Project.
See for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
" from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org