En-têtes dupliqués reçus du serveur

En-têtes dupliqués reçus du serveur

La réponse du serveur contenait des en-têtes dupliqués. 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 de proxy peut résoudre ce problème.

Erreur 349 (net :: ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION): Plusieurs en-têtes Content-Disposition distincts ont été reçus. Ceci est interdit pour protéger contre les attaques par fractionnement de réponse HTTP.

J’ai trouvé cette erreur lors de l’exportation en pdf en chrome.

Response.Buffer = false; Response.ClearHeaders(); ssortingng ext = objProp.PACKAGEFILENAME.Subssortingng(objProp.PACKAGEFILENAME.LastIndexOf(".")); ssortingng ext1 = ext.Subssortingng(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.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?

Celles-ci étaient un peu vieilles mais étaient hautes dans le classement Google, alors je pensais que je mettrais la réponse trouvée dans Chrome, en pdf, en-têtes dupliqués reçus du serveur.

Fondamentalement, mon problème était aussi que le nom de fichier contenait des virgules. Faites un remplacement sur les virgules pour les supprimer et ça devrait aller. Ma fonction pour créer un nom de fichier valide est ci-dessous.

  public static ssortingng MakeValidFileName(ssortingng name) { ssortingng invalidChars = Regex.Escape(new ssortingng(System.IO.Path.GetInvalidFileNameChars())); ssortingng invalidReStr = ssortingng.Format(@"[{0}]+", invalidChars); ssortingng replace = Regex.Replace(name, invalidReStr, "_").Replace(";", "").Replace(",", ""); return replace; } 

Le serveur DEVRAIT mettre des guillemets doubles autour du nom de fichier, comme mentionné par @cusman et @Touko dans leurs réponses.

Par exemple:

 Response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\""); 

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 (“contenu-disposition”, ” pièce jointe, nom_fichier = nom_votre_fichier”). Build ();

J’ai accidentellement mis une virgule après la pièce jointe. Je l’ai résolu en remplaçant la virgule par un point-virgule.

Il suffit de mettre une paire de guillemets doubles autour de votre nom de fichier comme ceci:

this.Response.AddHeader (“Content-disposition”, $ “pièce jointe; filename = \” {outputFileName} \ “”);