크롬에서 다운로드 에러 (ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION)
본문
서버에서 중복 헤더를 수신했습니다.
서버의 응답에 중복 헤더가 포함되어 있습니다. 이 문제는 일반적으로 잘못 설정된 웹사이트나 프록시로 인해 발생합니다. 웹사이트나 프록시 관리자만 이 문제를 해결할 수 있습니다.
349 오류(net::ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION): 여러 콘텐츠 배치 헤더를 수신했습니다. 이는 HTTP 응답 분할 공격으로부터 보호하기 위해 금지되었습니다.
위 에러는 IE에서는 나타나지 않고 Chrome에서만 발생한다.
익스플로러는 헤더가 통??
파일 다운로드시 크롬에서 "서버에서 중복헤더를 수신했습니다." 라고 나오는경우는
파일명에 콤마 "," 가 들어가있어서 그럴 경우가 많다.
참고로 크롬이외의 IE등에서는 에러가 발생하지 않는다..
Response.AddHeader("Content-Disposition", "attachment;filename=" + file.Name+ "");
↓
Response.AddHeader("Content-Disposition", "attachment;filename=\"" + file.Name+ "\"");
이렇게 바꾸거나
응답헤더에 ContentType 이외에 파일 정보를 Header에 추가하는 코드 때문에 나타나는 증상으로, Internet Explorer에서는 취약 사항으로 체크하지 않지만 Chrome에서는 그것을 취약점 공격으로 판단해서 발생한다.
※해결법은... 단순하게 IF절 등으로 ContentType 이외의 Header추가 부분을 조건 걸어주면 된다.
-ASP
※ASP의 경우 Browser체크 method는 Request.ServerVariables("HTTP_USER_AGENT")
------------------------------------------------------------------
검색해보면 파일이름에 , 콤마가 들어갔다고 .replace 함수로 콤마를 변경하면 된다고 하는데,
콤마따위 있을 리가 없잖아
그냥 지금 브라우저가 크롬이면 헤더없이, 크롬이 아니면 넣으라고 하면 됩니다
출처: http://makeus.tistory.com/222 [makeus]
분기는 아래
If InStr(Request.ServerVariables("HTTP_USER_AGENT"), "Chrome") > 0 Then
Else
Response.AddHeader "Content-Disposition","attachment; filename="&Server.URLPathEncode(attFileName)
End If
-java
Request.ServerVariables("HTTP_USER_AGENT");
'if(request.getHeader("User-Agent").contains("Firefox")) {
' response.setHeader("Content-Disposition",
' "attachment;filename=\"" + new String(item.getName().getBytes("UTF-8"), "ISO-8859-1") + "\";");
'} else {
' response.setHeader("Content-Disposition",
' "attachment;filename=\"" + URLEncoder.encode(item.getName(), "utf-8") + "\";");
'}
댓글목록 0