Vom Server empfangene doppelte Header
Die Antwort vom Server enthielt doppelte Header. Dieses Problem ist im Allgemeinen das Ergebnis einer falsch konfigurierten Website oder eines falsch konfigurierten Proxys. Nur der Website- oder Proxy-Administrator kann dieses Problem beheben.
Fehler 349 (net :: ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION): Es wurden mehrere unterschiedliche Content-Disposition-Header empfangen. Dies ist nicht zulässig, um sich vor Angriffen zur Aufteilung der HTTP-Antwort zu schützen.
Ich habe diesen Fehler beim Exportieren als PDF in Chrome gefunden.
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();
Wie kann ich das beheben?
google-chrome
pdf
http-headers
Purvesh Desai
quelle
quelle
Response.AddHeader("content-disposition", "attachment; filename=\"" + FileNameWithCommas + "\"");
Antworten:
Diese sind etwas alt, aber hoch im Google-Ranking, also dachte ich, ich würde die Antwort, die ich von Chrome gefunden habe, PDF-Anzeige, doppelte Header, die vom Server empfangen wurden, einwerfen
Grundsätzlich war mein Problem auch, dass der Dateiname Kommas enthielt. Ersetzen Sie Kommas, um sie zu entfernen, und es sollte Ihnen gut gehen. Meine Funktion zum Erstellen eines gültigen Dateinamens ist unten.
quelle
.Replace(";", "").Replace(",", "")
wenn bereits durch RegEx ersetzt? Fügen Sie;,
Ihrem RegEx-Muster hinzu:string invalidReStr = string.Format(@"[{0};,]+", invalidChars); string replace = Regex.Replace(name, invalidReStr, "_");
Der Server sollte setzen doppelte Anführungszeichen um die Dateinamen, wie @cusman und @Touko in ihren Antworten erwähnt.
Beispielsweise:
quelle
Für mich ging es um ein Komma nicht im Dateinamen, sondern wie folgt: -
Response.ok (StreamingOutput, MediaType.APPLICATION_OCTET_STREAM_TYPE) .header ("Inhaltsdisposition", " Anhang, Dateiname = Ihr_Dateiname"). Build ();
Ich habe nach dem Anhängen versehentlich ein Komma gesetzt. Wurde durch Ersetzen des Kommas durch ein Semikolon behoben.
quelle
Setzen Sie einfach ein paar doppelte Anführungszeichen um Ihren Dateinamen wie folgt:
this.Response.AddHeader ("Inhaltsdisposition", $ "Anhang; Dateiname =" {outputFileName} ");
quelle
Doppelte Anführungszeichen um den Dateinamen in der Kopfzeile sind der Standard pro MDN-Webdokument. Das Weglassen der Anführungszeichen bietet mehrere Möglichkeiten für Probleme, die sich aus Zeichen im Dateinamen ergeben.
quelle