En-têtes en double reçus du serveur
La réponse du serveur contenait des en-têtes en double. Ce problème est généralement le résultat d'un site Web ou d'un proxy mal configuré. Seul le site Web ou l'administrateur proxy peut résoudre ce problème.
Erreur 349 (net :: ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION): plusieurs en-têtes Content-Disposition distincts reçus. Ceci est interdit pour se protéger contre les attaques de fractionnement de réponse HTTP.
J'ai trouvé cette erreur lors de l'exportation au format pdf dans Chrome.
Response.Buffer = false;
Response.ClearHeaders();
string ext = objProp.PACKAGEFILENAME.Substring(objProp.PACKAGEFILENAME.LastIndexOf("."));
string ext1 = ext.Substring(1);
Response.ContentType = ext1;
Response.AddHeader("Content-Disposition", "target;_blank,attachment; filename=" + objProp.PACKAGEFILENAME);
const int ChunkSize = 1024;
byte[] binary = objProp.PACKAGEDOCUMENT;
System.IO.MemoryStream ms = new System.IO.MemoryStream(binary);
int SizeToWrite = ChunkSize;
for (int i = 0; i < binary.GetUpperBound(0) - 1; i = i + ChunkSize)
{
if (!Response.IsClientConnected) return;
if (i + ChunkSize >= binary.Length) SizeToWrite = binary.Length - i;
byte[] chunk = new byte[SizeToWrite];
ms.Read(chunk, 0, SizeToWrite);
Response.BinaryWrite(chunk);
Response.Flush();
}
Response.Close();
Comment régler ceci?
google-chrome
pdf
http-headers
Purvesh Desai
la source
la source
Response.AddHeader("content-disposition", "attachment; filename=\"" + FileNameWithCommas + "\"");
Réponses:
Ceux-ci sont un peu vieux mais étaient élevés dans le classement Google, alors j'ai pensé que je jetterais la réponse que j'ai trouvée à partir de Chrome, affichage pdf, En-têtes en double reçus du serveur
Fondamentalement, mon problème était également que le nom de fichier contenait des virgules. Remplacez les virgules pour les supprimer et tout devrait bien se passer. Ma fonction pour créer un nom de fichier valide est ci-dessous.
la source
.Replace(";", "").Replace(",", "")
déjà remplacé par RegEx? Ajoutez;,
à votre modèle RegEx:string invalidReStr = string.Format(@"[{0};,]+", invalidChars); string replace = Regex.Replace(name, invalidReStr, "_");
Le serveur DEVRAIT mettre des guillemets doubles autour du nom de fichier, comme mentionné par @cusman et @Touko dans leurs réponses.
Par exemple:
la source
Pour moi, le problème concernait une virgule pas dans le nom du fichier mais comme ci-dessous: -
Response.ok (streamingOutput, MediaType.APPLICATION_OCTET_STREAM_TYPE) .header ("disposition du contenu", " pièce jointe, nom_fichier = votre_nom_fichier"). Build ();
J'ai accidentellement mis une virgule après l'attachement. Je l'ai résolu en remplaçant la virgule par un point-virgule.
la source
Mettez simplement une paire de guillemets doubles autour de votre nom de fichier comme ceci:
this.Response.AddHeader ("Content-disposition", $ "attachment; filename = \" {outputFileName} \ "");
la source
Les guillemets doubles autour du nom de fichier dans l'en-tête sont la norme pour les documents Web MDN. L'omission des guillemets crée de multiples opportunités de problèmes liés aux caractères du nom de fichier.
la source