-
Een CGI-directory kan enkel aangemaakt worden in de webpages-directory: je bent dus verplicht een CGI-directory aan te maken voor iedere VHOST. Dit is een beperking van Abyss. Het gebeurt soms dat Abyss de kluts kwijt is en in plaats van de resultaat van de script-aanroep door te geven de script zelf doorstuurt, wat een duidelijke security breach is.
Werken met files is betrouwbaarder, het zit ingebakken in het systeem (en je kan altijd een "dump" vragen, dat wil zeggen dat de files niet automatisch door Xitami gewist worden na het uitvoeren van de script. Pipes zijn afkomstig van de Unix wereld en de implementatie in Windows is maar gebrekkig. Maar pipes werken sneller, en de output wordt direkt naar de gebruiker gestuurd, de webserver wacht niet totdat de script afgelopen is.
Xitami | Abyss |
---|---|
Inlezen van de data | |
OPEN ENVIRON$("CGI_STDIN") FOR BINARY AS #1 GET$#1, LOF(1), a$: CLOSE #1 De input zit in een file dat ingelezen wordt |
STDIN LINE a$
De stream wordt in één keer ingelezen. Opgelet, er zitten bugs in windows, waardoor het werken met pipes niet vanzelfsprekend is. |
Bij beide webservers wordt de input url-gecodeerd doorgegeven: je zal de data moeten decoderen voor je er iets mee kan doen. Dit is een standaard-formaat van de webbrowser, en dezelfde decoderingsalgeritme kan dus gebruikt worden.
| |
Output van de html | |
OPEN ENVIRON$("CGI_STDOUT") for output as #3 PRINT #3, ... PRINT #3, ... CLOSE #3 Xitami ondersteunt zowel klassieke html-output (de output is een gewone webpagina) als NHP-output (Non Parsed Headers): de script schrijft zelf de headers. |
STDOUT "HTTP/1.1 200 OK" STDOUT "Content-Type: text/html" STDOUT STDOUT ... data ... Bij Abyss moet je minstens de statuscode eerst doorsturen, anders geeft de script een 500- Server error door aan de browser. Per definitie ondersteunt Abyss dus niet de gewone klassieke HTML output. De gegenereerde output is dan meestal ook niet 100% compliant, want je hebt (in de meeste gevallen) geen Content-length-header voorzien! |
Xitami probeert alles uit te voeren dat in zijn executable directory staat. Bij klassieke exe-files moet je zelf de extensie niet vermelden, wat de veiligheid van het systeem ten goede komt (de bezoeker weet niet welk soort programma uitgevoerd wordt). <a href=/cgi-bin/forum>Bezoek ons forum</a> is dus een geldig aanroep voor een executable (forum.exe) dat in de cgi-directory gelegen is. | Bij Abyss moet je de volledige naam van de executable geven. De aanroep wordt dus: Overgaan van Abyss naar Xitami is dus gemakkelijker dan omgekeerd! |
Individuele landingspage bezoekers: