Header duplikat diterima dari server

119

Header duplikat diterima dari server

Tanggapan dari server berisi header duplikat. Masalah ini biasanya disebabkan oleh situs web atau proxy yang salah dikonfigurasi. Hanya situs web atau administrator proxy yang dapat memperbaiki masalah ini.

Kesalahan 349 (net :: ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION): Beberapa header Disposisi Konten berbeda diterima. Ini tidak diizinkan untuk melindungi dari serangan yang memecah tanggapan HTTP.

Saya menemukan kesalahan ini saat mengekspor ke pdf di 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();

Bagaimana cara mengatasinya?

Purvesh Desai
sumber
18
Saya juga menemukan bahwa koma di nama file akan memberikan kesalahan itu (hanya di Chrome). Saya berpikir pasti ada cara untuk mengatakan bahwa nama file = "abc, xyz.pdf" valid. Saya mengerti bahwa kita dapat mengganti "," dengan sesuatu yang lain, tetapi saya ingin mempertahankan dan mengembalikan nama file persis seperti itu. Tidak ada browser lain (IE, FireFox, Safari, Opera) yang saya coba memiliki masalah ini.
cusman
29
Jadi ada cara untuk membiarkannya tetap memiliki koma di nama file. Hanya perlu mengutip nama file. Response.AddHeader("content-disposition", "attachment; filename=\"" + FileNameWithCommas + "\"");
cusman
3
Terima kasih @cus. Itulah masalah saya - koma di nama file DAN hanya Chrome yang bermasalah dengan itu.
PeterKA

Jawaban:

236

Yang ini agak tua tetapi peringkatnya tinggi di google jadi saya pikir saya akan memberikan jawaban yang saya temukan dari Chrome, tampilan pdf, header duplikat yang diterima dari server

Pada dasarnya masalah saya juga adalah bahwa nama file mengandung koma. Lakukan penggantian koma untuk menghapusnya dan Anda akan baik-baik saja. Fungsi saya untuk membuat nama file yang valid ada di bawah ini.

    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;
    }
Bryan Roberts
sumber
22
Dari komentar @roryok di jawaban yang ditautkan, kutipan di sekitar nama file harus memperbaiki masalah. Dan sebenarnya spesifikasi tersebut sepertinya mengatakan bahwa nama file harus dikutip.
Touko
Tanda kutip akan membantu (dan harus ditambahkan) tetapi fungsi ini memiliki manfaat tambahan untuk menghilangkan karakter yang tidak valid sehingga Anda membuat nama yang lebih bersahabat di bagian akhir.
Bryan Roberts
@Younisbarznji itu berhasil untuk saya, Anda harus melarikan diri dari tanda kutip dalam nama file
coffekid
3
Ini berhasil untuk saya! Koma dan spasi bukanlah ide yang bagus dalam nama file!
Hugo
Mengapa .Replace(";", "").Replace(",", "")bila sudah diganti dengan RegEx? Tambahkan ;,ke pola RegEx Anda:string invalidReStr = string.Format(@"[{0};,]+", invalidChars); string replace = Regex.Replace(name, invalidReStr, "_");
SBF
97

Server HARUS memberi tanda kutip ganda di sekitar nama file, seperti yang disebutkan oleh @cusman dan @Touko dalam balasan mereka.

Sebagai contoh:

Response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
tomc
sumber
Saya juga mengganti tanda kutip ganda pada nama file dengan garis bawah.
Peter L
Saya telah melakukan hal yang sama, di sini juga mendapatkan nama file dengan garis bawah.
Jamsheer
5

Bagi saya masalahnya adalah tentang koma bukan di nama file tetapi seperti di bawah ini: -

Response.ok (streamingOutput, MediaType.APPLICATION_OCTET_STREAM_TYPE) .header ("content-disposition", " attachment, filename = your_file_name"). Build ();

Saya tidak sengaja meletakkan koma setelah keterikatan. Mengatasi masalah ini dengan mengganti koma dengan titik koma.

Deepak Agrawal
sumber
3

Letakkan saja sepasang tanda kutip ganda di sekitar nama file Anda seperti ini:

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

pengguna3578181
sumber
Tetapi ada garis bawah di nama file yang diunduh.
Jamsheer
1

Tanda kutip ganda di sekitar nama file di tajuk adalah standar per dokumen web MDN. Menghilangkan tanda kutip menciptakan banyak peluang untuk masalah yang timbul dari karakter dalam nama file.

Will Brownsberger
sumber