Programing

서버에서받은 중복 헤더

crosscheck 2020. 7. 28. 07:56
반응형

서버에서받은 중복 헤더


서버에서받은 중복 헤더

서버의 응답에 중복 헤더가 포함되었습니다. 이 문제는 일반적으로 잘못 구성된 웹 사이트 또는 프록시의 결과입니다. 웹 사이트 또는 프록시 관리자 만이 문제를 해결할 수 있습니다.

오류 349 (net :: ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION) : 여러 개의 고유 한 콘텐츠 처리 헤더가 수신되었습니다. HTTP 응답 분할 공격으로부터 보호 할 수 없습니다.

크롬에서 pdf로 내보내는 동안이 오류가 발견되었습니다.

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();

이 문제를 해결하는 방법?


이것은 조금 오래되었지만 Google 순위는 높았으므로 Chrome에서 찾은 답변 , pdf 표시, 서버에서받은 중복 헤더를 던질 것이라고 생각했습니다.

기본적으로 내 문제는 파일 이름에 쉼표가 포함되어 있다는 것입니다. 쉼표로 바꾸면 제거 할 수 있습니다. 유효한 파일 이름을 만드는 기능은 다음과 같습니다.

    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;
    }

서버 @cusman과 @Touko가 언급 한 것처럼 파일 이름을 큰 따옴표로 묶어야합니다.

예를 들면 다음과 같습니다.

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

나에게 문제는 파일 이름이 아닌 쉼표에 관한 것이지만 다음과 같습니다.-

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

첨부 후 실수로 쉼표를 넣었습니다. 쉼표를 세미콜론으로 바꿔서 해결했습니다.


다음과 같이 파일 이름 주위에 큰 따옴표 쌍을 넣으십시오.

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


헤더의 파일 이름 주위에 큰 따옴표는 MDN 웹 문서 당 표준입니다 . 따옴표를 생략하면 파일 이름의 문자로 인해 발생하는 여러 가지 문제가 발생할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/13578428/duplicate-headers-received-from-server

반응형