기본적으로 이것은 웹 사이트가 브라우저에 지시하기 때문에 발생합니다. 때로는 웹 사이트 개발자가 파일 공유 사이트에서 일반적으로 이러한 동작을 원하기 때문에 결정하기 때문입니다. 다른 경우에는 사용중인 소프트웨어 (예 : 포럼 또는 블로그 소프트웨어)의 기본 옵션이기 때문입니다. 때로는 사이트 개발자가 자신이 무엇을하고 있는지 전혀 모르기 때문입니다.
Content-Disposition
일반적으로 사이트 Content-Disposition
가 응답에 헤더를 전송하기 때문 입니다. 특히 inline
또는을 보낼 수 있습니다 attachment
.
inline
달리 지정되지 않은 경우 기본값이며, 가능한 경우 브라우저가 브라우저 창에서 파일을 엽니 다.
attachment
항상 파일을 다운로드하고 브라우저 내에서 파일을 열지 마십시오.
브라우저의 개발자 도구를 열면 특정 링크가 다음 응답 헤더를 보내는 것을 볼 수 있습니다.
Content-Disposition: attachment; filename="Schubert-Sonata-21-B-flat.pdf"
Content-Type: application/pdf
이렇게하면 브라우저가 항상attachment
파일을 다운로드 ( ) Schubert-Sonata-21-B-flat.pdf
하고 URL에서 유추하지 않고 기본 파일 이름 을 지정합니다. 또한 브라우저는 application/pdf
파일 이라고 브라우저에 올바르게 알려줍니다. 그러나 attachment
브라우저 이기 때문에 브라우저는 여전히 기본적으로 다운로드로 설정됩니다.
인라인 처리 세부 사항
A는 때 Content-Disposition
인라인 (또는 지정)이며, 브라우저는 기본 내장 된 뷰어에서 파일을 열려고합니다. 브라우저가 무엇인지 파일 유형을 알고, 경우에만 작동 하고 브라우저 유형을 여는 방법을 알고있다.
타입 감지
파일 유형은 서버에서 Content-Type
헤더를 사용하여 지정할 수 있습니다 . 예를 들어, 가장 일반적인 인라인 유형은 text/html
, application/javascript
그리고 text/css
현대적인 웹 사이트의 세 가지 주요 부분을 구성. 당신은 또한 더 난해한 유형을 가질 수 있습니다 application/pdf
.
또 다른 가능성은 서버가 지정한이다 Content-Type
의 application/octet-stream
. 이것은 가장 일반적인 유형이며 파일이 임의의 데이터임을 브라우저에 알려줍니다.이 시점에서 브라우저가 할 수있는 유일한 일은 파일을 다운로드하는 것입니다 (이론적으로 우리는 그것을 얻을 것입니다).
Content-Type
서버에서 a 를 지정하지 않은 경우 (때때로도) 브라우저는 파일을 읽고 패턴을 찾아서 유형을 추측하려고하는 스니핑 을 수행 할 수 있습니다 .
타입 취급
inline
지정되지 않은 처리를 가진 파일을 수신 하면 브라우저는 가능한 경우 브라우저 내에서 파일을 열려고 시도해야합니다. 이를 위해 파일 형식을보고 형식을 인식하면 파일 형식을 열려고 시도합니다. 대부분의 브라우저는 text/
간단한 텍스트 뷰어에서 모든 유형을 열고 text/html
웹 페이지 로 렌더링하려고 시도 하며 특수 구문 강조 표시된 뷰어 등에서 열application/json
수 있습니다 .
유형 application/octet-stream
은 특별히 처리되었습니다. 임의의 바이트 스트림을 나타내는 가장 일반적인 형식이어야하므로이 "형식"의 모든 파일에 적용 할 수있는 처리기가 없어야합니다. 예를 들어, 파이어 폭스에서, 이 기본 핸들러를 설정하는 무능력으로 명단 에 대해 application/octet-stream
.
일부 웹 사이트는 비표준 유형도 사용했습니다. 나는 application/force-download
브라우저를 사용하여 유형과 관련이있는 것을 인식하지 못하지만 특수 처리를 즐기지 않기 때문에 다운로드로 사용되는 것을 보았습니다 application/octet-stream
.
약간의 역사 수업
PDF를 처리하는 방법을보기 위해 웹 기록을 조금 살펴볼 수 있습니다. 과거에 브라우저는 PDF가 무엇인지 전혀 몰랐습니다. 그래서 그들은 열 수 없었습니다. 그러나 내장 된 PDF 뷰어가 사용되기 훨씬 전에 브라우저에서 PDF가 열리는 것을 보았습니다. 어떻게 작동합니까?
예전에는 제한된 확장 기능 / 애드온으로 수행 할 수있는 것보다 훨씬 많은 제어 기능으로 브라우저 기능을 확장 할 수있었습니다. 그것들은 가장 일반적으로 플러그인 이라고 알려져 있습니다 . Internet Explorer에서는 ActiveX 컨트롤이었습니다. Mozilla Firefox 및 이후 Google Chrome에서는 NPAPI 플러그인이었습니다. 이 플러그인은 다른 프로그램이 할 수있는 모든 작업을 수행 할 수 있으며 브라우저에서 인식 할 수없는 특정 파일 형식에 대한 처리기로 추가 등록 할 수 있습니다. (실수로, 이것은 나중에 큰 보안 위험으로 판명 되었으며이 강력한 플러그인에 대한 지원은 점차적으로 떨어졌습니다 ...)
플러그인 시대에는 Adobe Acrobat Reader를 설치 한 다음 application/pdf
MIME 유형을 등록하는 ActiveX 또는 NPAPI 플러그인을 설치하고 플러그인을 사용하여 해당 유형을 인라인으로 열도록 브라우저에 지시합니다.
물론, 이러한 플러그인으로 인한 많은 보안 및 성능 문제가 발생한 후 주요 브라우저 공급 업체는 대부분의 플러그인에 대한 지원을 중단하면서 자체 PDF 뷰어를 통합하기로 결정했습니다. 우리가 여전히 볼 수있는 유일한 것은 Adobe Shockwave Flash application/x-shockwave-flash
입니다.
실제로 이것에 대한 몇 가지 남은 컨트롤이 있습니다. 예를 들어 Firefox에서는 Preview in Firefox
옵션이 여전히 존재합니다.
과거에는 해당 유형을 등록한 여러 플러그인 중에서 선택할 수있었습니다. 예를 들어 Flash에 등록 된 유형 목록은 다음과 같습니다.
당시에는 HTML5와 함께 제공되는 많은 미디어 지원이있었습니다. 브라우저는 MP4 컨테이너 또는 H.264 비디오를 처리하는 방법을 모르고 MP3 파일을 재생하는 방법 등을 모릅니다. VLC와 같은 미디어 플레이어가 제공하는 플러그인을 볼 수 있습니다. 또는 Windows Media Player 또는 웹 사이트에도 Flash에 내장 된 미디어 플레이어가 내장되어 있습니다.
Content-Type: application/octet-stream
하지만 요즘에는 훨씬 덜 일반적입니다.