Zduplikowane nagłówki odebrane z serwera
Odpowiedź z serwera zawierała zduplikowane nagłówki. Ten problem jest zwykle wynikiem nieprawidłowo skonfigurowanej witryny internetowej lub serwera proxy. Tylko administrator serwisu WWW lub proxy może rozwiązać ten problem.
Błąd 349 (net :: ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION): Otrzymano wiele różnych nagłówków Content-Disposition. Jest to niedozwolone w celu ochrony przed atakami polegającymi na dzieleniu odpowiedzi HTTP.
Znalazłem ten błąd podczas eksportowania do pdf w 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();
Jak to naprawić?
google-chrome
pdf
http-headers
Purvesh Desai
źródło
źródło
Response.AddHeader("content-disposition", "attachment; filename=\"" + FileNameWithCommas + "\"");
Odpowiedzi:
Ten trochę stary, ale był wysoko w rankingu Google, więc pomyślałem, że wrzucę odpowiedź, którą znalazłem z Chrome, wyświetlacz pdf, zduplikowane nagłówki otrzymane z serwera
Zasadniczo moim problemem było również to, że nazwa pliku zawierała przecinki. Zastąp przecinki, aby je usunąć i wszystko powinno być w porządku. Poniżej znajduje się moja funkcja tworzenia prawidłowej nazwy pliku.
źródło
.Replace(";", "").Replace(",", "")
już zastępując RegEx? Dodaj;,
do wzoru RegEx:string invalidReStr = string.Format(@"[{0};,]+", invalidChars); string replace = Regex.Replace(name, invalidReStr, "_");
Serwer POWINIEN umieścić nazwę pliku w podwójne cudzysłowy, o czym wspominali @cusman i @Touko w swoich odpowiedziach.
Na przykład:
źródło
U mnie problem dotyczył przecinka nie w nazwie pliku ale jak poniżej: -
Response.ok (streamingOutput, MediaType.APPLICATION_OCTET_STREAM_TYPE) .header ("dyspozycja zawartości", " załącznik, nazwa_pliku = twoja_nazwa_pliku"). Build ();
Przypadkowo wstawiłem przecinek po załączniku. Rozwiązałem to, zastępując przecinek średnikiem.
źródło
Po prostu umieść dwa podwójne cudzysłowy wokół nazwy pliku w następujący sposób:
this.Response.AddHeader ("Dyspozycja zawartości", $ "załącznik; nazwa_pliku = \" {nazwa_pliku_wyjściowego} \ "");
źródło
Podwójne cudzysłowy wokół nazwy pliku w nagłówku to standard w dokumentach internetowych MDN. Pominięcie cudzysłowów stwarza wiele możliwości problemów wynikających ze znaków w nazwie pliku.
źródło