Schrift
[thread]3104[/thread]

mod_perl-Header-Problem: Content-Type doppelt?!!! (Seite 2)

Leser: 1


<< |< 1 2 3 4 >| >> 34 Einträge, 4 Seiten
Heromaster
 2004-03-16 14:08
#30638 #30638
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
Quote
Undenkbar, denn das Programm gibt im Browser nicht nur HTML-Header aus! U.a. kommen auch Text/Plain und diverse Bilderformate vor.

Deswegen hast Du mit mod_perl die Möglichkeit, direkt die ausgehenden Header zu manipulieren.
Wenn Du Du was anderes als text/html senden möchtest, kannst Du, glaube ich,
Code: (dl )
$r->headers_out(Content-Type => 'text/plain' );
verwenden. Bin jetzt nicht 100% sicher, obs die richtige Methode war, muss nochmal in meiner Referenz nachschauen.

Zwecks doppeltem Header, probiere zum Test, PerlSendHeaders Off in Deine conf zu schreiben, das sollte helfen.
Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.
pq
 2004-03-16 14:21
#30639 #30639
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Froschpopo,16.03.2004, 12:21]Undenkbar, denn das Programm gibt im Browser nicht nur HTML-Header aus! U.a. kommen auch Text/Plain und diverse Bilderformate vor.
[/quote]
das berücksichtigt mod_perl ja!
Quote
Im übrigen beantwortet das nicht meine Frage: Warum wird der Header doppelt ausgegeben?

weil du nicht den richtigen header ausgibst. du musst eine HTTP_response
ausgeben, wenn PerlSendHeader Off ist.
mach's dir doch einfach und schalte es auf 'On' oder benutze CGI::header(),
denn CGI.pm bemerkt, ob mod_perl läuft.

edit:
und ausserdem schrieb ich:
zeig mal ein minimales beispiel-skript und deine mod_perl- und
apache-version...

warum um himmels willen ist das immer so schwierig? dass man beim
ersten posting sowas vergisst, ist ja noch verzeihlich, aber wenn man
hilfe bekommen will, und jemand fragt einen nach der version von perl etc.,
dann sagt man die doch. und ein minimales beispielskript war das auch
nicht. content-type und eine zeile content hätte doch echt gereicht, oder?\n\n

<!--EDIT|pq|1079440002-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Froschpopo
 2004-03-16 14:22
#30640 #30640
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
also in httpd.conf gibt es kein PerlSendHeaders!
update: Du hast Dich vertipp, es heißt PerlSendHeader.
Hab es mal auf off gesetzt. Allerdings kann ich jetzt vermutlich garkeine Bilder mehr ausgeben, die nicht durch das Perl-script laufen sondern direkt im Directory aufgerufen werden\n\n

<!--EDIT|Froschpopo|1079439803-->
Froschpopo
 2004-03-16 14:25
#30641 #30641
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
mein Ziel ist es, ein Perscript zu schreiben, welches sowohl in der CGI als auch in mod_perl läuft. Das ist so verkaufsfreundlicher ! CGI.pm lehne ich ab!!
pq
 2004-03-16 14:30
#30642 #30642
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Froschpopo,16.03.2004, 13:25]mein Ziel ist es, ein Perscript zu schreiben, welches sowohl in der CGI als auch in mod_perl läuft. Das ist so verkaufsfreundlicher ! CGI.pm lehne ich ab!![/quote]
na dann hilf dir selbst.

patient: herr doktor, herr doktor, es tut da so weh!
doktor: dann verschreib ich ihnen mal diese salbe.
patient: die lehne ich aber ab!
was soll jetzt der doktor bloss sagen?

warum lehnst du CGI.pm ab?
ich sagte dir doch, du musst eine HTTP-response schreiben. kannst du
von hand oder mit den Apache-modulen oder mit CGI.pm
machen. such's dir halt aus. was für ein problem hast du jetzt noch?
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Froschpopo
 2004-03-16 14:36
#30643 #30643
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
ich verstehe aber eines noch nicht und darauf habe ich bisher keine Antwort bekommen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
sub tmpl {
my $usrid = get_my_userid();
my $text;
local $/;
local *D;
my ($dat, $hashref) = @_;
open(D, $_[0]) || die $!;
$text = <D>;
close(D);
$hashref->{sid} = $sessionid unless $hashref->{sid};
$hashref->{username} = $usrid;
chop($text);
$text =~ s{ %% ( .*? ) %% }
{ exists( $hashref->{$1} )
? $hashref->{$1}
: ""
}gsex;
return "Content-Type: text/html\n\n$text" if $hashref->{header} == 1;
return $text;
}
print tmpl('/usr/local.../page', {header=>1});

WARUM will Konqueror das Script runterladen wenn angeblich ein Header gesetzt wurde?
Heromaster
 2004-03-16 14:47
#30644 #30644
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
[quote=Froschpopo,16.03.2004, 13:22]also in httpd.conf gibt es kein PerlSendHeaders!
update: Du hast Dich vertipp, es heißt PerlSendHeader.
Hab es mal auf off gesetzt. Allerdings kann ich jetzt vermutlich garkeine Bilder mehr ausgeben, die nicht durch das Perl-script laufen sondern direkt im Directory aufgerufen werden[/quote]
Funktioniert es damit, oder funktioniert es nicht? Wenn ja, dann schalte es wieder, nimm aus Deinen Scripten das print "Content-type...." raus und fang an, Dich mit den Apache-Modulen zu beschäftigen.
Ansonsten: Viel Spaß!\n\n

<!--EDIT|Heromaster|1079441311-->
Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.
Taulmarill
 2004-03-16 15:06
#30645 #30645
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
aaaalso,
blos weil du eine headerzeile bei mod_perl ausgibst is der header noch lange nich gesetzt. header setzt man bei mod_perl mit
Code: (dl )
 $r->content_type('text/html'); 

man könnte evtl. ne .pm für mod_perl und ne .pl für cgi schreiben und den rest in ein anderes modul/package auslagern
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Froschpopo
 2004-03-16 15:26
#30646 #30646
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
also ich hab mich entschlossen eine anweisung zu machen, die den header ausgibt wenn das script über cgi läuft und keinen header wenn über mod_perl. Wie kann ich feststellen, ob das script über mod_perl läuft?
jan
 2004-03-16 16:01
#30647 #30647
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
wenn du schon zu faul bist, die docs zu lesen, dann lies doch zur abwechslung wenigstens, was hier so geantwortet wird.
Quote
Feststellen, ob ein Script unter mod_perl laeuft, kannst Du am einfachsten, indem du die Existenz und den Wert der Umgebungsvariable $ENV{MOD_PERL} abfragst.

strat, 16.03.2004, 11:58, im anderen thread
<< |< 1 2 3 4 >| >> 34 Einträge, 4 Seiten



View all threads created 2004-03-16 02:10.