text / javascript 대신 JavaScript MIME 유형 application / javascript를 언제 사용해야합니까?


157

IE 에서 작동하지 않는 질문 jQuery 코드를 기반으로 ,text/javascript Internet Explorer에서 이해할 수 있도록 HTML 문서에 사용됩니다.

그러나 나는 언제 사용할 것이며 application/javascript, 더 중요한 것은 왜 대신 대신 사용할 것 text/javascript입니까?


가능한 속임수 / 설명 : stackoverflow.com/questions/876561/…
Benn



답변:


243

이론적으로,에 따라 RFC 4329 , application/javascript.

예상되는 이유 application는 형식을 읽을 수 있는지 또는 실행할 수 있는지와 관련이 없기 때문 입니다. 일반적인 charset매개 변수가 아닌 언어 / 유형 자체에 의해 정의 된 사용자 지정 문자 집합 결정 메커니즘이 있기 때문 입니다. 하위 유형text 프록시에서 다른 문자 으로 코드 변환하여 문자 매개 변수를 변경할 수 있어야합니다. 다음과 같은 이유로 JavaScript에는 해당되지 않습니다.

ㅏ. RFC는 사용자 에이전트가 스크립트에서 BOM 스니핑을 수행하여 유형을 결정해야한다고 말합니다 (브라우저가 실제로이 작업을 수행하는지 확실하지 않습니다).

비. 브라우저는 다른 정보 (페이지 인코딩 및 일부 브라우저에서script charset 속성 포함)를 사용하여 문자 집합을 결정합니다. 따라서 리소스를 트랜스 코딩하려고 시도한 프록시는 사용자를 중단시킵니다. (물론 어쨌든 아무도 트랜스 코딩 프록시를 사용하지 않습니다. 그러나 그 의도였습니다.)

따라서 파일의 정확한 바이트는 정확하게 보존되어야하므로 application기술적으로 문자 기반이 아닌 이진 유형이 text됩니다.

같은 이유로 application/xml공식적으로 선호됩니다 text/xml. XML에는 자체 대역 내 문자 집합 신호 메커니즘이 있습니다. 그리고 모든 사람들은 applicationXML도 무시합니다 .

text/javascripttext/xml공식 똑바로 살아라되지 않을 수도 있습니다,하지만이 모두가 호환성을 위해 오늘을 사용하는 것, 그리고 그들이 옳은 일을하지 않은 이유는 실질적으로 완전히 중요하지 않은 말할 수 있습니다.


4
가장 "호환성"솔루션은 응답에 컨텐츠 유형을 전혀 포함하지 않는 것입니다. RFC에 따르면 명시적인 컨텐츠 유형이 없으면 수신자는 "컨텍스트에 따라" 해석 할 수 있으며 이는 첫 번째 브라우저에서 모든 브라우저에 대해 항상 올바른 동작입니다.
Pacerier

application/javascript호환 모드에서 실행중인 IE에 주의하십시오 IE=8. 인라인 스크립트가 제대로 평가되지 않은 것 같습니다. text/javascript거기서 잘 작동합니다.
Joscha

2
@Pacerier-이 의견이 5 살이라는 것을 알고 있지만 오늘날 보안상의 이유로 특히 포럼 유형 웹 사이트의 경우 MIME 유형을 포함하는 것이 가장 좋습니다. 수신자가 유형을 해석하게하면 악성 자바 스크립트 파일을 이미지로 업로드 한 다음 브라우저가 해당 스크립트를 해석하고 실행하게하여 공격 할 수 있습니다. 서버가 모든 응답에 대해 MIME 유형을 리턴 X-Content-Type-Options: nosniff하도록하고 브라우저가 유형을 해석하지 못하도록 헤더 를 사용하는 것이 좋습니다 .
sammy_winter

@sammy_winter 나는 이런 경고를 어디에서나 볼 수 있으며 매번 울고 있습니다. 사용자가 콘텐츠를 업로드 할 수 있도록 허용 한 경우 "아, 그래, PNG 파일의 이름 일치 정규식, 믿을 수있다"보다 더 많은 유효성 검사를 수행했을 것입니다. 잘못된 헤더가 "보안 문제"가되면 문제가 더 심화 될 수 있습니다. 그렇지 않습니까? 이것은 숨기기 Server: nginx또는 nginx가 보내는 것과 동일 합니다. 마치 구멍을 찾을 수있는 사람이 어떤 서버를 실행하는지 알기 위해 명시적인 헤더가 필요
하듯이

17

Javascript의 MIME 유형의 문제점은 몇 년 동안 표준이 없었기 때문입니다. 이제 공식 MIME 유형으로 application / javascript 가 있습니다.

그러나 실제로 브라우저가 유형 자체를 결정할 수 있기 때문에 MIME 유형은 전혀 중요하지 않습니다. 그렇기 때문에 HTML5 사양 type="text/javascript"에 더 이상 필요하지 않다고 명시되어 있습니다.


5

application왜냐하면- .js파일은 사용자가 읽고 싶은 것이 아니라 실행되어야하기 때문입니다.


그것은 공식적인 대답이지만 IE는 그것에 질식합니다.
Benn

20
@Benn : IE 사용자가 제대로 실행되지 않아 모든 JS 파일을 읽어야하기 때문에 어쩌면? 적어도 마이크로 소프트는 정직합니다.)
thejh

귀하의 의견을 사랑하지만 불행히도 자바 스크립트를 읽을 수없는 사람들은 여전히 ​​IE를 사용하므로 이에 대처해야합니다 :(.
Mark Baijens

1
나는 당신이 그것을 읽고 싶은지 아닌지는 이유와 관련이 있다고 생각하지 않습니다. 데이터가 어떻게 트랜스 코딩되는지 또는 가능한지의 여부와 관련이 있습니다.
Zenexer

기술적으로 HTML과 CSS는 코드의 결과를 시각적 컨텐츠로 생성하기 위해 브라우저에서 "실행"(구문 분석)하며 사용자가 코드를 "읽기"위한 것이 아니므로이 대답은 의미가 없습니다. "텍스트"와 "응용 프로그램"이 무엇인지에 대해 큰 혼란이있는 것 같습니다. 나는이 문제에 투표를 할 수 있다면, 나는 IETF가 아니라 "텍스트"내용을 고려해야한다라고 말하고 싶지만 text, 그리고 binary중 하나와 같은 application등 -OR은 "이미지"와 같이 말했다 유형의 "목적"또는 "문서"

1

application / javascript는 올바른 유형이지만 IE6-8에서는 지원되지 않으므로 text / javascript가 붙어 있습니다. 유효성에 신경 쓰지 않으면 (HTML5 제외) 유형을 지정하지 마십시오.


이거 어디서 났어? 지원되는 것이 확실합니다. 또는 적어도 무시됩니다.
Zenexer 2016 년

@Zenexer 는 다른 질문에 대한 답변을 읽었 습니다 . 겉으로보기에 IE 호환성은 아니오를 의미 application/javascript합니다.
Camilo Martin

@CamiloMartin IE에서 항상 6까지 사용합니다. 그들은 기본적으로 JavaScript를 사용합니다.
Zenexer

@Zenexer Hm, 이상하다. 다른 Q & A에서 어떤 문제가 있었는지 궁금합니다.
Camilo Martin

@ Zenexer이 문제해결 한 지 오래되었지만 IE6-8과 관련된 문제일으키는 다른 계정이 있습니다 . 왜 이것이 중요한지 아닌지 확실하지는 않지만 내 경험상 문제가 발생했습니다.
Radu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.