Nous avons un lien de téléchargement de fichier PDF sur une page Web avec un programme CGI en langage C transmettant le fichier depuis le serveur web de notre appareil embarqué. Le serveur Web est personnalisé en raison de limitations de mémoire importantes.Quel en-tête HTTP est nécessaire pour que les navigateurs Web utilisent le nom de fichier suggéré? (Téléchargement de fichier à partir de CGI en C)
Le nom de fichier suggéré par le programme C est "Manual.pdf".
Sur Internet Explorer 8, lorsque nous cliquons sur le lien, la boîte habituelle «Ouvrir/Enregistrer» s'ouvre et le nom de fichier suggéré affiché est «download.pdf», ce qui est faux. Sur Firefox, le nom de fichier suggéré est "download.cgi", ce qui est pire. Cependant, les deux navigateurs indiquent correctement que le téléchargement est de type PDF.
Voici quelques extraits non apparentés de code pour afficher les en-têtes nous reviennent:
{ CONTENT_TYPE_PDF, "application/pdf\nContent-Disposition:attachment;" }
sprintf(tmpBuf, "Content-Type: %s\n", get_tbl_string((tbl_str_itm_t*)content_type, session->response.contenttype));
strcpy(tmpBuf, "filename=Manual.pdf\n");
strcat(tmpBuf, "Cache-Control: no-cache, no-store\n");
Quelqu'un peut-il dire ce que nous faisons mal?
Toute aide grandement appréciée.
Meilleures salutations, Bert
Êtes-vous sûr de vouloir 'strcpy' dans un tampon vous venez de remplir? –
Etes-vous sûr de vouloir utiliser strcpy, strcat et sprintf - qui ne font aucune sorte de vérification des limites sur votre tampon - dans une application Web? (Il est mauvais dans * chaque * application, mais faire une telle chose dans une application CGI ne fait que demander des ennuis) –