expertenaustausch > comm.software.* > comm.software.webserver

Christoph Schneegans (18.04.2006, 19:30)
Hallo allerseits!

Ich hatte kürzlich in <news:e211u9.258.1>
nach einem HTTP-Proxy gefragt, der "Content-Type: text/html; charset=foo"
in "Content-Type: application/xml; charset=foo" ändert. Mangelns
Antworten möchte ich nun selbst einen solchen Proxy aufsetzen.
Versuchsweise habe ich in der httpd.conf

ProxyRequests On
ProxyVia On
<Proxy *>
Header set Content-Type application/xml
</Proxy>

eingetragen. Apache arbeitet dann zwar einwandfrei als Proxy, aber der
"Content-Type"-Header wird nicht geändert. Woran liegt das?
Carsten Wiedmann (20.04.2006, 02:44)
Christoph Schneegans schrieb:

> Ich hatte kürzlich in <news:e211u9.258.1>
> nach einem HTTP-Proxy gefragt, der "Content-Type: text/html; charset=foo"
> in "Content-Type: application/xml; charset=foo" ändert.


Proxomitron sollte sowas können (Windows vorausgesetzt).

> Mangelns
> Antworten möchte ich nun selbst einen solchen Proxy aufsetzen.
> Versuchsweise habe ich in der httpd.conf
> ProxyRequests On
> ProxyVia On
> <Proxy *>
> Header set Content-Type application/xml
> </Proxy>
> eingetragen. Apache arbeitet dann zwar einwandfrei als Proxy, aber der
> "Content-Type"-Header wird nicht geändert. Woran liegt das?


Ich schätze mal das liegt an RFC2612 / Punkt 13.5.2 (Non-modifiable
Headers). Sieht auch im Code zu mod_proxy_http danach aus.

Zum Testen hätte ich folgendes (nicht ganz ausgereift ;-):
[httpd.conf]
| <VirtualHost *:8080>
| ProxyRequests On
| <Proxy *>
| Order allow,deny
| Allow from all
| RewriteEngine On
| RewriteRule .* /proxy.php [PT]
| </Proxy>
| <VirtualHost *:8080>

[proxy.php]
| <?php
| header('Content-Type: application/xml');
| readfile($_SERVER['REQUEST_URI']);
| exit;
| ?>

Damit hast du einen Proxy auf Port 8080. Durch die RewriteRule wird der
Request an das PHP-Script "proxy.php" im DocumentRoot des Servers
weitergeleitet (reverse Proxy). Dieses setzt dann den gewünschten Header und
reicht das Document der ursprünglich angeforderten URI durch.

Gruß
Carsten
Christoph Schneegans (22.04.2006, 16:18)
Carsten Wiedmann schrieb:

> Damit hast du einen Proxy auf Port 8080. Durch die RewriteRule wird der
> Request an das PHP-Script "proxy.php" im DocumentRoot des Servers
> weitergeleitet (reverse Proxy). Dieses setzt dann den gewünschten Header
> und reicht das Document der ursprünglich angeforderten URI durch.


Aha, genial, das muß ich mir merken, auch wenn ich für das aktuelle
Problem doch einen Ansatz wie beim "Lynx Viewer" verwende.
Ähnliche Themen