JavaScript 파일을 제공 할 때 application / javascript 또는 application / x-javascript를 사용하는 것이 더 좋습니다.


95

전체 질문이 제목에 맞습니다. 그리고 몇 가지 맥락을 추가하기 위해 : 사양에 따라 무엇이 최고인지 묻는 것이 아니라 요즘 배포 된 브라우저 조합을 고려할 때 가장 잘 작동하는 것이 무엇인지 묻습니다.

일부 데이터 포인트 :

  • Google은 text/javascript홈페이지에서 사용되는 JS를 사용합니다.
  • Google은 text/javascriptGoogle 문서에서 사용 합니다.
  • Google은 Ajax 라이브러리 서비스application/x-javascript 와 함께 자바 스크립트 파일을 제공하는 데 사용 합니다 .
  • Yahoo는 application/x-javascriptJS를 제공하기 위해 사용 합니다.
  • 야후는 application/x-javascript홈페이지에서 제공되는 자바 스크립트를 사용 합니다.

4
이상한. 예제에서 세 번째 대안을 제시합니다. Tim에 따르면 두 대기업 모두 (표준과 관련하여) 잘못되었습니다. 이는 아마도 브라우저가 관대하다는 것을 의미 할뿐 (여기서는 큰 뉴스는 아님) 상관 없을 수도 있습니다.
PhiLho

1
가능한 속임수 : Javascript MIME 유형
Bergi

답변:


115
  • text/javascript 구식이다
  • application/x-javascript 이동하기로 결정하는 동안 실험적이었습니다 ...
  • application/javascript JS의 현재 공식 MIME 유형입니다.

즉, 브라우저는 종종 content-type서버 에서 보낸 것을 무시 하고 type속성에 많은주의를 기울입니다 (일부는 아직 인식하지 못할 수도 있음 application/javascript).

내 추천 :

  • 서버에서 애플리케이션 / 자바 스크립트 사용
  • 사용 HTML 5와 생락 type스크립트 요소에서 속성

주의 : HTML 사양 은 MIME 표준과 모순 되며 나중에 변경 될 수 있도록 다시 변경하려는 노력text/javascript 이 있습니다.


3
몇 달 전의이 질문은 정반대입니다. 누군가 착각합니다. :) "Kelly의 말이 맞습니다. 브라우저는 스크립트 태그의 type 속성을 통해 응답 헤더와 함께 전송 된 MIME 유형을 신뢰하는 경향이 있습니다." stackoverflow.com/questions/189850/…
Marco

6
오 안돼! 크고 모 놀리 식이며 느린 조직이 옳 아야합니다! 사양이 잘못되었을 것입니다! Narghh. 대기업 (느린 기업) 중 하나가 저를 고용 했더라도 사양과 저의 경험을 계속 신뢰하겠습니다.
Quentin 2012

1
누군가가 W3C에게 text / javascript가 쓸모 없다고 말하는 것을 잊었습니다. 것 같다 기본적 으로 HTML 5 . :: 스크래치 머리 : (이 섹션의 내 피상적 인 독서가 올 경우) 또한 사용자 에이전트가되는 것 같다 생각 만 가고 type, 따라서이 무시 속성이 Content-type올바른 행동을 할 것이다.
big_m 2013

1
@big_m — 많은 브라우저가 인식하지 못하기 때문에 application/javascript이를 지정하면 스크립트를 무시하게됩니다. 사용자 에이전트는 Content-Type을 무시해서는 안됩니다. type 속성은 무엇을 기대해야하는지 알려줍니다. 그들이 그것을 지원하지 않는다면, 그들은 그것을 요청하는 것을 귀찮게해서는 안됩니다. 서버가 그것이 다른 것이라고 말하면 HTML이 말하는 것보다 (적어도 HTTP에 따르면 다른 사양을 볼 수 있으며 링크를 제공하지 않았을 수 있습니다) 계속해야합니다.
Quentin 2013

1
@Quentin, 내가 script링크 한 요소 의 HTML 5 섹션을 참조 했습니다. 이 섹션을 읽은 내용은 설명하는 내용과 다릅니다. 그것은 type속성 에 많은 중요성을 두는 것처럼 보이며 Content-Type문자 인코딩을 결정하는 것을 제외 하고는를 확인하는 것에 대해 언급하지 않습니다 . 사용자 에이전트가 Content-Type이 예상 한 것과 일치하는지 확인하는 것이 현명한 것처럼 보이지만 HTML 사양에서이를 필요로하거나 권장하는 것을 찾지 못했습니다.
big_m


7

페이지에서 js에 응용 프로그램 / 자바 스크립트를 사용하도록 선택하면 IE7 및 IE8에서 스크립트를 실행하지 않습니다! 당신이 원하는 모든 것을 마이크로 소프트를 비난하지만, 대부분의 사람들이 당신의 페이지를 운영하기를 원한다면 텍스트 / 자바 스크립트를 사용하세요.


3
"application / javascript"가 작동하지 않는다고 말할 때 이것이 HTTP 응답의 콘텐츠 유형으로 설정되어 있는지 아니면 스크립트 태그의 "type"속성으로 설정되어 있는지 의미합니까? 원래 질문은 HTTP 응답의 콘텐츠 유형이었습니다. 다른 답변에 따르면 스크립트 태그의 "type"속성 값만 IE에서 어느 쪽이든 차이를 만드는 것처럼 보입니다.
Jesse Hallett

7

예전에는 language="javacript". 그런 다음 type="text/javascript". 이제입니다 type="application/javacript". 좋아, 멍청 해지고있어. 이전 브라우저 중 일부는 새 브라우저를 인식하지 application/javascript못하지만 여전히 이전 브라우저는 인식합니다 text/javascript. 나는 이것을 계속 사용할 계획이다. 그렇지 않으면의 모든 인스턴스를 text/javascript으로 변경하는 데 시간을 낭비 할 것이다 application/javascript.
이제 언젠가는 그 반대가 될 수도 있습니다. 언젠가 최신 브라우저는 엄격하게 표준을 준수하기 위해 이전 기술을 거부 할 수 있습니다.
그러나 내 웹 사이트를 보는 사람들이 "내 브라우저를 업그레이드 한 이후로 귀하의 웹 사이트의 약 50 %가 사라졌다"고 불평하기 전까지는 내 웹 사이트의 코드를 변경할 동기가 없습니다.


7

이 질문에 대한 2020 년 답이 있습니다.

text/javascriptHTML 표준에 따른 올바른 자바 스크립트 MIME 유형입니다 .

서버는 text/javascript자바 스크립트 리소스를 사용해야 합니다. 서버는 JavaScript 리소스에 대해 다른 JavaScript MIME 유형을 사용하지 않아야하며 비 JavaScript MIME 유형을 사용해서는 안됩니다.

그리고 또한 :

[…]이 사양에서 JavaScript를 참조하는 데 사용되는 MIME 유형 text/javascript은 RFC 4329에 따라 공식적으로 사용되지 않는 유형 임에도 불구하고 가장 일반적으로 사용되는 유형이기 때문에입니다.

IETF 수준의 RFC에 이러한 현실을 반영하기위한 작업이 진행 중입니다. https://datatracker.ietf.org/doc/draft-ietf-dispatch-javascript-mjs/

" text/javascript이 구식"이라는 주장은 HTML 표준과 위에서 언급 한 IETF 초안 (즉, 곧 출시 될 RFC)이 명시 적으로 수정하고있는 RFC 4329를 기반으로 한 것입니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.