Cabeçalhos duplicados recebidos do servidor
A resposta do servidor continha cabeçalhos duplicados. Esse problema geralmente é o resultado de um site ou proxy mal configurado. Somente o administrador do site ou proxy pode corrigir esse problema.
Erro 349 (net :: ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION): Vários cabeçalhos de disposição de conteúdo distintos recebidos. Isso não é permitido para proteger contra ataques de divisão de resposta HTTP.
Encontrei este erro ao exportar para pdf no 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();
Como consertar isto?
google-chrome
pdf
http-headers
Purvesh Desai
fonte
fonte
Response.AddHeader("content-disposition", "attachment; filename=\"" + FileNameWithCommas + "\"");
Respostas:
Este era um pouco antigo, mas estava no topo do ranking do google, então pensei em dar a resposta que encontrei no Chrome, exibição de pdf, cabeçalhos duplicados recebidos do servidor
Basicamente, meu problema também era que o nome do arquivo continha vírgulas. Substitua as vírgulas para removê-las e você ficará bem. Minha função para criar um nome de arquivo válido está abaixo.
fonte
.Replace(";", "").Replace(",", "")
quando já está substituindo por RegEx? Adicione;,
ao seu padrão RegEx:string invalidReStr = string.Format(@"[{0};,]+", invalidChars); string replace = Regex.Replace(name, invalidReStr, "_");
O servidor DEVE colocar aspas duplas ao redor do nome do arquivo, conforme mencionado por @cusman e @Touko em suas respostas.
Por exemplo:
fonte
Para mim, o problema era sobre uma vírgula não no nome do arquivo, mas como abaixo: -
Response.ok (streamingOutput, MediaType.APPLICATION_OCTET_STREAM_TYPE) .header ("content-disposition", " anexo, nome do arquivo = your_file_name"). Build ();
Eu acidentalmente coloquei uma vírgula após o anexo. Resolvi o problema substituindo a vírgula por um ponto e vírgula.
fonte
Basta colocar um par de aspas duplas em torno do nome do arquivo como este:
this.Response.AddHeader ("Content-disposition", $ "attachment; filename = \" {outputFileName} \ "");
fonte
Aspas duplas ao redor do nome do arquivo no cabeçalho são o padrão para os documentos da web MDN. Omitir as aspas cria várias oportunidades para problemas decorrentes de caracteres no nome do arquivo.
fonte