Re: How to suppress HTTP headers?

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

 



* "Thomas Capote" <thomascapote@xxxxxxxxxxxxxxxxxx>:
> 3) The header() command inserts or replaces headers to be sent by PHP.
> However, header() (with no arguments) does not suppress header output, it
> simply generates an error. Even if something like "header('Content-type:')"
> suppressed the 'Content-type' header, how would we suppress all header
> output including the status line ('HTTP/1.1 200 OK')?

The "HTTP/1.1 200 OK" is a header sent by your web server; PHP has NO
control over headers sent by the web server -- only those that PHP
appends to them.

> 5) Mr. Lynch is right: this is NOT an HTTP compliant exchange. This is a bug
> in the client machine that cannot be fixed (by me), but must be worked
> around somehow.

This is the real nut of the problem.

> Tough little problem, eh guys?
>
> I see three possible avenues to a solution.
>
> 1) Find some PHP command that will suppress header generation, or simply
> circumvent it, if only as a side-effect.

Already noted, cano't be done.

> 2) Get Apache to not send headers for this page, maybe through SSI
> directives, .htaccess file, or some other mechanism.

I don't think there's a way to do this -- HTTP headers are part of the
HTTP protocol, and that's what Apache tries to implement. But I can't
say with 100% certainty that someone hasn't done it. Search on the
apache web site.

> 3) Write my own mini-server (to listen on port 6237 or something) to handle
> these requests using socket calls in PERL, Java, or even the PHP CLI. I'm
> not sure I could pull off programming something robust enough, frankly. I'd
> rather hijack Apache to do the heavy lifting.

I think this is likely to be the direction you'll need to go. This sort
of thing actually isn't too difficult to do -- I've used and tinkered on
PHP chat server implementations that do similar things. Perl has a
wealth of tools for creating net servers which, again, make this stuff
fairly trivial.

Good luck!

> -----Original Message-----
> From: Richard Lynch [mailto:ceo@xxxxxxxxx] 
> Sent: Thursday, August 18, 2005 3:48 AM
> To: tg-php@xxxxxxxxxxxxxxxxxxxxxx
> Cc: php-general@xxxxxxxxxxxxx; thomascapote@xxxxxxxxxxxxxxxxxx
> Subject: RE:  How to suppress HTTP headers?
>
> On Tue, August 16, 2005 10:02 am, tg-php@xxxxxxxxxxxxxxxxxxxxxx wrote:
>> BTW: I made a mistake last time. Apparently with CLI there are
>> headers.  You can use "php -q" to suppress headers when using PHP via
>
> CGI has always sent out at least one header.
> Content-type: text/html
> -q has always suppressed that.
>
> CLI may or may not have sent headers...
>
>> CLI.  Odd.  Not sure I had to do that when I wrote a few CLI scripts
>> before.  Oh well, something to play with another day (don't have time
>> to check it right now).
> >
>> So another thing I may be wrong on.. but a thought..  If you use the
>> header() command, does it prevent the web server from generating it's
>> own headers?
>
> I believe your header() commands only REPLACE any headers PHP would
> have sent, but any other headers it's gonna send, it's still gonna
> send them.
>
>> That is, if you send out "<html><body>Something</body></html" does the
>> web server automatically generate the headers but if you use header()
>> it uses what PHP generates rather than it's own?
> >
>> If so.. can you just do:
>> header();
> >
>> With nothing in it to suppress headers?
>
> I think that will suppress headers... by issuing an ERROR that a
> required argument is missing :-)
>
>> Or can you do something like:
> >
>> header("<xml>stuff</xml>");
>
> No.
>
> That is not a valid header, for starters.
>
> You MIGHT be able to "wipe out" the headers PHP sends by doing
> something like:
>
> header("Content-type:"); //Wipe out Content-type:
>
> but I wouldn't cound on it.
>
> Sounds to me like the remote server isn't actually using HTTP at all.
>
> HTTP without headers is just not HTTP.
>
> You may want to write your own "server" in PHP using sockets -- but
> then you'll need to convince the remote server to connect/use that
> different "server" you have written.  Either connecting on a different
> port, or to a different domain, or a different URL (maybe) so you can
> configure your box to use your "server" for these weird requests.
>


-- 
Matthew Weier O'Phinney
Zend Certified Engineer
http://weierophinney.net/matthew/

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux