it-swarm.com.de

Vom Server empfangene doppelte Header

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 Proxy. Nur der Website- oder Proxy-Administrator kann dieses Problem beheben.

Fehler 349 (net :: ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION): Mehrere verschiedene Content-Disposition-Header empfangen. Dies ist zum Schutz vor HTTP-Antwort-Splitting-Angriffen nicht zulässig.

Ich habe diesen Fehler beim Exportieren als PDF-Datei in Chrom 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?

102
Purvesh Desai

Diese waren ein wenig alt, aber sie hatten einen hohen Rang in der Google-Rangliste. Ich dachte, ich würde die Antwort einwerfen, die ich aus Chrome, PDF-Anzeige, Duplizierte Header vom Server gefunden habe.

Im Grunde bestand mein Problem auch darin, dass der Dateiname Kommas enthielt. Entfernen Sie die Kommas, um sie zu entfernen, und es sollte Ihnen gut gehen. Meine Funktion zum Erstellen eines gültigen Dateinamens befindet sich unten.

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

Der ServerSOLLTEin doppelte Anführungszeichen setzen, wie von @cusman und @Touko in ihren Antworten erwähnt.

Zum Beispiel:

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

Für mich ging es um ein Komma, nicht im Dateinamen, sondern wie folgt: -

Response.ok (streamingOutput, MediaType.APPLICATION_OCTET_STREAM_TYPE) .header ("content-disposition", " Anhang, Dateiname = Name Ihrer Datei"). Build ();

Ich setze versehentlich ein Komma nach dem Anhängen. Es wurde behoben, indem das Komma durch ein Semikolon ersetzt wurde.

5
Deepak Agrawal

Setzen Sie einfach zwei Anführungszeichen um Ihren Dateinamen:

this.Response.AddHeader (Anlage "Content-disposition", $ "; Dateiname = \" {outputFileName}\"");

2
user3578181

Doppelte Anführungszeichen um den Dateinamen in der Kopfzeile ist der Standard pro MDN-Webdokumente. Wenn Sie die Anführungszeichen nicht angeben, ergeben sich mehrere Möglichkeiten für Probleme, die durch Zeichen im Dateinamen entstehen.

0