Header/Base64 Kodierung
Marco Zäbe
- cgi
0 Calocybe
Ich habe ein CGI Script geschrieben das eine Grafikdatei(GIF) die BASE64 codiert ist an einen Browser ausgibt. Als Ausgabe auf dem Browser bekomme ich aber nur die Codierten Zeichen und nicht meine Grafik(im IE <=4.0, beim Netscape ein leeres Grafiksymbol). Ich weiß nicht ob ich Header etwas falsch mache ich habe auch schon verschiedene Varianten versucht, bisher leider ohne Erfolg.
hier die Ausgabe meines CGI Scriptes
MIME-Version: 1.0
Content-Type: image/gif
Content-Transfer-Encoding: base64; charset=US-ASCII name=politik.gif
Content-Description:
R0lGODlhtAApALMAAAAA/xAQ/yAg/zAw/0BA/1BQ/2Rk/4CA/5CQ/6Cg/7Cw
/8DA/9DQ/+Dg//Dw/////ywAAAAAtAApAAAI/gAfCBxIsKDBgwgTKlzIsKHD
hxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bN
mzhz6tzJs6fPn0CDClV4oOgBgkaPNkyK1OhQlUmjLnBgEYBVAASvYm2oNevV
hQ4UHCBA1kACqk8pal0LIIDSiV0HxhU4V+5Xu1YVMmBrNYCCtHD5aiWg9q5A
pni3Ni3qNW/CBYKtMgAcUauBogXWJgjsWGFdz4YPQiaAYIGCzFcNUIaodcHA
vVcLFExQIIDVAQYaGKyLOMEBrUY3P0BMN3TSvw1cExRwlfBqh60JEmg+0MEA
wcITN946na/zunMN/lwdgNZgdwCyn3O9qlzgdavpH7y3SoD51b/a859f+z10
XAVXBTDZQQ7YZlV26oFmVXuQXYWAQAkEOKB4Vgmw3YUPMNDgggssMCB4XzFg
IAD4GdTAfAMkuJ5Vlx2AWl9ovaiaQA5oNeADIHaGY2jF6aiVdQ4exIABIxJQ
nooJRdZXiSOWKF+QPSq2o488TimlZakhdN4ACCKZZGQE3Ghlew+c91aOV1aJ
5mBaVuklQpYZhYCYUZJpZn5RYqinlQHYB8CD5rn55m7sLTQfoAL5WSKae+aZ
GAMAwmiQb4wNulB0ClEIgHMPbAhAeYwmdqSVGL4Yn6USYZpQA1oVsEACZCPO
6OisD/jpqm+0xtVAkwUBh+qXCzIUoWDk7VmXptSRiicCAR7p668HqaqQAn6m
NmqoNO63aa6hzXfqs9BmxAACRSkwKkUMBEdnuOy26+678MYr77z01mvvvfjm
q+++/Pbrb0AAO3==
und der dazu gehörige Quellcod des Scriptes in C++:
#include <stdio.h>
int main()
{
printf("MIME-Version: 1.0\n");
printf("Content-Type: image/gif\n");
printf("Content-Transfer-Encoding: base64; charset=US-ASCII name=politik.gif\n");
printf("Content-Description:\r\n\r\n");
printf("R0lGODlhtAApALMAAAAA/xAQ/yAg/zAw/0BA/1BQ/2Rk/4CA/5CQ/6Cg/7Cw\n");
printf("/8DA/9DQ/+Dg//Dw/////ywAAAAAtAApAAAI/gAfCBxIsKDBgwgTKlzIsKHD\n");
printf("hxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bN\n");
printf("mzhz6tzJs6fPn0CDClV4oOgBgkaPNkyK1OhQlUmjLnBgEYBVAASvYm2oNevV\n");
printf("hQ4UHCBA1kACqk8pal0LIIDSiV0HxhU4V+5Xu1YVMmBrNYCCtHD5aiWg9q5A\n");
printf("pni3Ni3qNW/CBYKtMgAcUauBogXWJgjsWGFdz4YPQiaAYIGCzFcNUIaodcHA\n");
printf("vVcLFExQIIDVAQYaGKyLOMEBrUY3P0BMN3TSvw1cExRwlfBqh60JEmg+0MEA\n");
printf("wcITN946na/zunMN/lwdgNZgdwCyn3O9qlzgdavpH7y3SoD51b/a859f+z10\n");
printf("XAVXBTDZQQ7YZlV26oFmVXuQXYWAQAkEOKB4Vgmw3YUPMNDgggssMCB4XzFg\n");
printf("IAD4GdTAfAMkuJ5Vlx2AWl9ovaiaQA5oNeADIHaGY2jF6aiVdQ4exIABIxJQ\n");
printf("nooJRdZXiSOWKF+QPSq2o488TimlZakhdN4ACCKZZGQE3Ghlew+c91aOV1aJ\n");
printf("5mBaVuklQpYZhYCYUZJpZn5RYqinlQHYB8CD5rn55m7sLTQfoAL5WSKae+aZ\n");
printf("GAMAwmiQb4wNulB0ClEIgHMPbAhAeYwmdqSVGL4Yn6USYZpQA1oVsEACZCPO\n");
printf("6OisD/jpqm+0xtVAkwUBh+qXCzIUoWDk7VmXptSRiicCAR7p668HqaqQAn6m\n");
printf("NmqoNO63aa6hzXfqs9BmxAACRSkwKkUMBEdnuOy26+678MYr77z01mvvvfjm\n");
printf("q+++/Pbrb0AAO3==\n");
return 0;
}
Wenn jemand
Hallo Marco!
Ich weiss nicht, ob base64 als Transfer encoding ueberhaupt von den Browsern unterstuetzt wird.
Aufgefallen ist mir lediglich ein fehlendes Semikolon:
Content-Transfer-Encoding: base64; charset=US-ASCII name=politik.gif
--^
Die base64-Daten hab ich mir jetzt mal nicht durchgelesen. ;-)
Ich bin mir nicht sicher, ob ein Line Break als eines von LF oder CRLF dargestellt werden muss, oder ob das egal ist. Auf Windozen wird ein \n von den Stdio-Routinen in CRLF umgewandelt.
So long