Portál AbcLinuxu, 13. května 2025 17:36

Dotaz: browser stahuje výstup cgi jako sobor

dan.h avatar 29.6.2010 15:11 dan.h | skóre: 8 | blog: K8_blog | okr. Písek, město Čimelice, obec Nerestce
browser stahuje výstup cgi jako sobor
Přečteno: 330×
Odpovědět | Admin

Udělal jsem si program v C, který pouští na STDOUT, stejně jako třeba perlový script, Content-type: text/html\n\n a HTML kód. V prohlížeči by se měla zobrazit HTML stránka jako například od cgi scriptu v Perlu. Problém je popsán níže. Problém bych viděl v HTTP hlaviččce, ale nevím, kde přesně.

Pod Windows jsem program zkompiloval pomocí MinGW GCC, jako web server jsem použil balík Xampp (Apache2), zkompilovanou binárku jsem dal do cgi-bin a v IE/Firefoxu jsem zadal adresu na tu binárku. Zobrazila se mi HTML stránka tak, jak měla být z výstupu té binárky.

Pod Debianem jsem program zkompiloval pomocí GCC, HTTP server Apache2, otestoval jsem cgi-bin adresář scriptem v Perlu, který měl zobrazit stejnou stránku jako program. Perlový script i binárka měly koncovku .cgi (na woknech i na debianu). Binárku jsem dal do cgi-bin ke scriptu a pokusil se ji zobrazit pomocí IE a Firefoxu z Woken. Oba prohlížeče nabídly stažení souboru. Když jsem soubor dal stahnout, zjistil jsem, že v souboru je HTML tak, jak má být , ale oba prohlížeče ho považují za binárku. Taktéž se chová Elinks z localhostu toho debianu.

Očividně Apache na Debianu převzal výstup od programu a správně zpracoval, ale nějak špatně seřídil HTTP hlavičku. Jelikož má, nejen pod Debianem, Apache konfiguráky po celém /etc a nemá jich zrovna málo, tak nemám přehled, ve kterém bych mohl tohle chování upravit.


Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

29.6.2010 15:15 Opin Dog
Rozbalit Rozbalit vše Re: browser stahuje výstup cgi jako sobor
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zjavne nema APACHE nakonfigurovany dany adresar pre spustanie CGI scritov

(chyba nieco taketo (ukazka pre Win) ScriptAlias /cgi-bin/ "C:/Program Files/Apache Group/Apache/cgi-bin/" a k nemu aj prislusny handler (ukazka pre CGI) AddHandler cgi-script .cgi )

alebo vystup scriptu nie je korektny
dan.h avatar 29.6.2010 15:23 dan.h | skóre: 8 | blog: K8_blog | okr. Písek, město Čimelice, obec Nerestce
Rozbalit Rozbalit vše Re: browser stahuje výstup cgi jako sobor

CGI adresář je nastavený správně... Perlový script pracoval jak má a byl ve stejném adresáři jako binárka, obojí mělo spustitelný příznak, stejná práva, práva v adresáři v pořádku. Obojí spuštěné z terminálu vyhodilo to samé a Apache zpracoval výstup z obou správně, akorát stránka z perlového scriptu se zobrazila jako stránka a stránka od binárky se stahla jako soubor, ve kterém bylo normal html a nic navíc.

29.6.2010 15:30 Opin Dog
Rozbalit Rozbalit vše Re: browser stahuje výstup cgi jako sobor
Stale to vidim tak, ako by nebola zapnuta podpora pre spustanie scriptov
dan.h avatar 29.6.2010 15:48 dan.h | skóre: 8 | blog: K8_blog | okr. Písek, město Čimelice, obec Nerestce
Rozbalit Rozbalit vše Re: browser stahuje výstup cgi jako sobor
Když Perlový script funguje a program v C také, jen s tím rozdílem, že prohlížeč HTML stahne místo toho, aby ho zobrazil jako stránku, tak nevím. Firefox ve Windows určitě nemůže sám spustit ten program, když binárka je umístěna a zkompilována na PC s Debianem (pro libc debianu, ne mingw). Leda že by IE i Firefox uměli spustit SSH, najít si binárku a výstup z ní si zobrazit sami.
29.6.2010 15:23 NN
Rozbalit Rozbalit vše Re: browser stahuje výstup cgi jako sobor
Odpovědět | | Sbalit | Link | Blokovat | Admin
a2enmod cgi ?
NN
dan.h avatar 29.6.2010 15:29 dan.h | skóre: 8 | blog: K8_blog | okr. Písek, město Čimelice, obec Nerestce
Rozbalit Rozbalit vše Re: browser stahuje výstup cgi jako sobor
radius:/etc/apache2# a2enmod cgi
Module cgi already enabled
Mám ho vypnout?
29.6.2010 15:32 Opin Dog
Rozbalit Rozbalit vše Re: browser stahuje výstup cgi jako sobor
skuste testovaci script:

#!/usr/bin/perl print "Content-type: text/plain\n\nHello!\n";
29.6.2010 15:34 Opin Dog
Rozbalit Rozbalit vše Re: browser stahuje výstup cgi jako sobor
sorry, este raz

#!/usr/bin/perl
print "Content-type: text/plain\n\nHello!\n";
dan.h avatar 29.6.2010 15:34 dan.h | skóre: 8 | blog: K8_blog | okr. Písek, město Čimelice, obec Nerestce
Rozbalit Rozbalit vše Re: browser stahuje výstup cgi jako sobor
Ano, ten jsem použil, akorát jsem kolem Hello World dal HTML a fungovalo to normálně.
dan.h avatar 29.6.2010 15:55 dan.h | skóre: 8 | blog: K8_blog | okr. Písek, město Čimelice, obec Nerestce
Rozbalit Rozbalit vše Re: browser stahuje výstup cgi jako sobor
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dal bych sem zdrojáky a výstup, kdyby značka <stdio.h> nebyla zakázána :-D
29.6.2010 16:00 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: browser stahuje výstup cgi jako sobor
Vložte je jako přílohu komentáře. Nebo nahraďte znaky < za &lt; a > za &gt;. Ale pro kód delší než pár řádků je lepší příloha komentáře.
Řešení 1× (dan.h (tazatel))
29.6.2010 16:02 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: browser stahuje výstup cgi jako sobor
Odpovědět | | Sbalit | Link | Blokovat | Admin
Otestuj to URL pomocou wget --save-headers http://url... a pozri aky Content-Type skutocne server posiela.
If you hold a Unix shell up to your ear, you can you hear the C.
dan.h avatar 29.6.2010 16:12 dan.h | skóre: 8 | blog: K8_blog | okr. Písek, město Čimelice, obec Nerestce
Rozbalit Rozbalit vše Re: browser stahuje výstup cgi jako sobor
zasekne se na požadavku, bohužel už nemám čas to teď testovat dál, tak zkusím doma na Archu
Řešení 1× (dan.h (tazatel))
dan.h avatar 29.6.2010 19:05 dan.h | skóre: 8 | blog: K8_blog | okr. Písek, město Čimelice, obec Nerestce
Rozbalit Rozbalit vše Re: browser stahuje výstup cgi jako sobor
Odpovědět | | Sbalit | Link | Blokovat | Admin

Tak na Debianu jsem to nevyřešil, ale na Archu stačilo udělat čistou instalaci, nastavit cgi-bin, přidat addhandler cgi-script, nastavit práva souboru a běhalo to, takže "chyba" byla asi někde ve změně konfigurace Apache pro Debian, nebo bylo potřeba přidat mime-type do mime.conf, což jsem nestihl zkontrolovat.

<řešení>Jsem blbec a neměl bych dělat s něčím, co neumím konfigurovat</řešení> :-D

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.