Content-Disposition
응답 헤더 Content

개요

Content-Disposition은 응답 본문을 브라우저가 페이지 안에 표시(inline)할지, 다운로드(attachment)로 처리할지를 지정하는 헤더입니다. 다운로드일 때는 저장 대화상자에 제안할 파일명도 함께 줄 수 있습니다.

multipart/form-data의 각 파트 헤더로도 쓰여 폼 필드 이름과 업로드 파일명을 나타냅니다.

자세히

attachment; filename="report.pdf"를 주면 브라우저는 콘텐츠 타입과 무관하게 다운로드로 처리하고 report.pdf를 기본 저장 이름으로 제안합니다. inline은 PDF·이미지처럼 브라우저가 렌더할 수 있으면 페이지 안에서 보여줍니다.

비ASCII 파일명은 filename만으로는 안전하게 전달되지 않습니다. RFC 5987의 filename*=UTF-8''<퍼센트 인코딩> 형식을 함께 제공하면 최신 브라우저가 유니코드 이름을 올바르게 복원합니다. 구형 클라이언트 호환을 위해 ASCII 대체용 filename과 유니코드용 filename*을 둘 다 주는 것이 관행입니다.

사용자 제공 이름을 그대로 filename에 넣으면 위험합니다. 개행·경로 구분자·따옴표를 제거하거나 인코딩하지 않으면 헤더 인젝션이나 경로 조작으로 이어질 수 있습니다.

문법

Content-Disposition: <inline|attachment>[; filename="..."][; filename*=UTF-8''...]

e.g. Content-Disposition: attachment; filename="report.pdf"; filename*=UTF-8''%EB%B3%B4%EA%B3%A0%EC%84%9C.pdf

지시어 / 값

inline브라우저가 콘텐츠를 페이지 안에서 바로 표시하도록 합니다(기본 성향).
attachment다운로드로 처리해 저장 대화상자를 띄웁니다.
filename="<name>"저장 시 제안 파일명(ASCII). 경로·제어문자는 넣지 마세요.
filename*=UTF-8''<pct-encoded>RFC 5987 방식의 비ASCII(유니코드) 파일명. 국제 파일명에 필요합니다.
name="<field>"multipart/form-data 본문에서 폼 필드 이름을 지정합니다.

실무 참고

관련 헤더

관련 상태코드

스펙 근거