Double-têtes reçue du serveur
Double-têtes reçue du serveur
La réponse du serveur de contenu en double-têtes. Ce problème est généralement le résultat d'un problème de configuration de site web ou un proxy. Seul le site internet ou l'administrateur du proxy pouvez résoudre ce problème.
Erreur 349 (net::ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION): Plusieurs distinctes Content-Disposition des en-têtes reçu. Ce n'est pas autorisé à se protéger contre "HTTP response splitting" des attaques.
J'ai trouvé cette erreur lors de l'exportation au format pdf dans le navigateur 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ésoudre ce problème?
- J'ai également trouvé que la virgule dans le nom de fichier afin de lui donner de l'erreur (dans Chrome uniquement). Je pense il doit y avoir une façon de dire que le nom de fichier="abc xyz.pdf" est valide. Je que nous pouvons remplacer la "," avec quelque chose d'autre, mais je veux préserver et de retourner le nom du fichier exactement comme il est. Aucun des autres navigateurs (IE, FireFox, Safari, Opera) j'ai essayé ont ce problème.
- Donc, il y a un moyen de le laisser encore avoir de virgule dans le nom de fichier. Suffit de citer le nom de fichier.
Response.AddHeader("content-disposition", "attachment; filename=\"" + FileNameWithCommas + "\"");
- Merci @cusman. C'est exactement mon problème - une virgule dans le nom de fichier ET un seul Chrome avait un problème avec ça.
- Double Possible de Chrome pdf affichage, Double-têtes reçu par le serveur
Vous devez vous connecter pour publier un commentaire.
Ce ceux un peu vieux, mais a été élevé dans le classement google j'ai donc pensé que je pourrais jeter dans la réponse que j'ai trouvé à partir de Chrome, pdf affichage, Double-têtes reçu par le serveur
Fondamentalement, mon problème était que le nom de fichier contenait des virgules. Faire un remplacement sur des virgules pour les supprimer et vous devriez être bien. Ma fonction d'un nom de fichier valide est ci-dessous.
Le serveur DEVRAIT mettre des guillemets autour du nom de fichier, tel que mentionné par @cusman et @Touko dans leurs réponses.
Par exemple:
Pour moi, le problème était d'environ un virgule pas dans le nom de fichier, mais comme ci-dessous: -
Réponse.ok(streamingOutput,MediaType.APPLICATION_OCTET_STREAM_TYPE).header("content-disposition", "pièce jointe, le nom de fichier=your_file_name").build();
J'ai accidentellement mis une virgule après la fixation. Obtenu il est résolu par le remplacement de la virgule par un point-virgule.
Il suffit de mettre une paire de guillemets autour de votre nom de fichier comme ceci:
cette.Réponse.AddHeader("Content-disposition", $"attachment; filename=\"{outputFileName}\"");
Des guillemets autour du nom de fichier dans l'en-tête est la norme par MDN web docs. en Omettant les guillemets crée de multiples occasions pour les problèmes découlant de caractères dans le nom de fichier.