application / x-javascript와 text / javascript 컨텐츠 유형의 차이점


245

이 헤더의 차이점은 무엇입니까?

Content-Type: application/javascript
Content-Type: application/x-javascript
Content-Type: text/javascript

어느 것이 가장 좋고 왜?

동일하다고 말하지 마십시오. 동일하면 세 개가 없었을 것입니다. 나는 두 가지 일을 모두 알고 있지만 차이점을 알고 싶습니다.


1
차이점은 스크립트가 압축되지 않는 일반적인 이유이기도합니다. 제공하는 실제 유형에 대해 httpCompression에 항목이 있는지 확인하고 IIS Express는 기본적으로 application / x-javascript 및 text / * 만 압축합니다.
rism

주의 : "javascript mime type"의 전체 목록은 html.spec.whatwg.org/multipage/…에 있습니다. 즉 , 지시문이 지정 될 때 브라우저가 script태그의 type속성을 허용해야하는 값 목록입니다 nosniff. developer.mozilla.org/en-US/docs/Web/HTTP/Headers/…
JohnLBevan

답변:


320

text/javascript는 쓸모 없고 표준화 될 때까지 과도기 동안 application/x-javascript실험적 (따라서 x-접두사)이었습니다 application/javascript.

을 사용해야합니다 application/javascript. 이것은 RFC에 문서화되어 있습니다.

브라우저에 관해서는 (적어도 HTTP 헤더에는) 차이가 없습니다. 있도록 이것은 단지 변경했다 text/*application/*MIME 타입 그룹은 가능하면 일관된 의미를 가지고 있었다. ( text/*MIME 타입은 사람이 읽을 수있는 콘텐츠를위한 것입니다, 자바 스크립트는 직접 인간에게 의미를 전달하기 위해 설계되지 않았습니다).

스크립트 요소 application/javascripttype속성에 사용 하면 일부 이전 브라우저에서 스크립트가 알 수없는 언어로 무시됩니다. text/javascriptHTML 5에서 허용되는 속성을 계속 사용 하거나 속성을 완전히 생략하십시오.

브라우저가 보편적으로 (내가 아는 한) 브라우저에서 HTTP 콘텐츠 유형의 스크립트를 완전히 무시하거나 인식 할 수있을 정도로 최신식이기 때문에 이것은 HTTP 헤더에서 문제가되지 않습니다 application/javascript.


자세한 답변을 주셔서 감사합니다. 한 가지 더 문제-당신은 그것을 완전히 생략 할 수 있다고 말했지만 (HTML5 만)-내 질문 (나중에 누군가가 편집 한)은 PHP의 JS에 관한 것입니다-모든 서버 / 브라우저에서 PHP / JS 콤보로 작동합니까? 내가 완전히 생략하면 ??
Obmerk Kronen

8
요소 에서 type 속성 을 생략 할 수 있습니다 <script>. Content-TypeHTTP 헤더를 생략 할 수는 없습니다 ... PHP에서이를 지정하지 않으면 PHP는 기본적으로 text/html매우 잘못된 것입니다.
Quentin

2
사람이 읽을 수있는 논리에 따라 CSS를 텍스트 대신 응용 프로그램으로 분류해서는 안됩니까?
Fabrício Matté

2
@frnhr이 답변을 수정하면 의도 된 의미가 변경되었습니다 (이는 text/javascript쓸모없고 application/x-javascript실험적 이라고 진술 되었습니다). 더 나쁜 것은, 대답의 시작이 일관성 text/javascript이 없었으며, 명백한 이유없이 대답의 맨 위에 부적절하게 어울리는 블록이 있다는 것입니다.
Mark Amery 13

1
SVN에서는 반드시 text / javascript를 사용하십시오. SVN은 text /로 시작하지 않는 모든 것을 이진으로 처리합니다. 전체 SVN 작업 복사본을 수정하려면 다음을 포함하는 mime.cmd 파일을 만들어야합니다.이 파일 @echo off for /r . %%X in (*.js) do ( svn propset svn:mime-type text/javascript "%%X" ) 은 실행될 때 리포지토리에있는 모든 JS 파일의 mime 유형을 text / javascript로 변경합니다. 그런 다음 새로운 mime 유형으로 JS 파일을 SVN에 커밋해야합니다.
Mark Eldridge

21

로 시작하는 MIME 유형 x-은 표준화되지 않았습니다. 자바 스크립트의 경우 구식입니다. 두 번째 코드 스 니펫 추가

<?Header('Content-Type: text/javascript');?>

short_open_tags활성화 해야 합니다. 피해야합니다.

<?php Header('Content-Type: text/javascript');?>

그러나 자바 스크립트에 대한 완전히 올바른 MIME 유형은

application/javascript

http://www.iana.org/assignments/media-types/application/index.html


1
오래된 대답이지만, 이것이 최선의 방법이 아닐 때까지 짧은 열린 태그로 시작하는 것이
좋은지 모르겠습니다 (

8

RFC 4329에 따르면 JavaScript의 올바른 MIME 유형은 다음과 같아야합니다 application/javascript. 그러나 이전 IE 버전은 기대 한 이후로 이것에 질식했습니다 text/javascript.


7
내가 아는 한 IE는 원숭이에게 HTTP 콘텐츠 유형이 말하는 것을 제공하지 않습니다. HTML type속성의 내용 만 (및 HTML 5 초안에서 해당 속성은 JavaScript의 경우 생략 될 수 있음)
Quentin

@Quentin 아 ... 그게 문제가되었습니다. 감사!
martin

3

type = "application / javascript"사용

HTML5의 경우 type 속성이 더 이상 사용되지 않으므로 제거 할 수 있습니다. 참고 : w3.org에 따르면 기본적으로 "text / javascript"로 설정되어 있으므로 "application / javascript"를 제거하는 대신 추가하는 것이 좋습니다.

http://www.w3.org/TR/html5/scripting-1.html#attr-script-type
type 속성은 스크립트 언어 또는 데이터 형식을 제공합니다. 속성이 존재하면 해당 값은 유효한 MIME 유형이어야합니다. 문자 세트 매개 변수를 지정하지 않아야합니다. 속성이없는 경우 사용되는 기본값은 "text / javascript"입니다.

"text / javascript"는 더 이상 사용되지 않으므로 "application / javascript"를 사용하십시오 .

RFC 4329 : http://www.rfc-editor.org/rfc/rfc4329.txt

  1. 배포 된 스크립팅 미디어 유형 및 호환성

    ECMAScript 및 JavaScript로 작성된 프로그램을 레이블링하고 교환하기 위해 등록되지 않은 다양한 매체 유형이 임시 방식으로 사용되었습니다. 여기에는 다음이 포함됩니다.

    + ------------------------------------------------- ---- + | 텍스트 / 자바 스크립트 | 텍스트 / 엑마 스크립트 | | 텍스트 / 자바 스크립트 1.0 | 텍스트 / 자바 스크립트 1.1 | | 텍스트 / 자바 스크립트 1.2 | 텍스트 / 자바 스크립트 1.3 | | 텍스트 / 자바 스크립트 1.4 | 텍스트 / 자바 스크립트 1.5 | | 텍스트 / jscript | 텍스트 / 라이브 스크립트 | | text / x-javascript | text / x-ecmascript | | application / x-javascript | application / x-ecmascript | | 응용 프로그램 / 자바 스크립트 | 응용 프로그램 / 전자 스크립트 | + ------------------------------------------------- ---- +

이런 종류의 콘텐츠에 "텍스트"최상위 유형을 사용하는 것은 문제가있는 것으로 알려져 있습니다. 따라서이 문서는 text / javascript 및 text /
ecmascript 를 정의 하지만 "사용되지 않음"으로 표시합니다.
위의 부분에 나열된 실험 및 미등록 미디어 유형은 사용하지 않는 것이 좋습니다.
미디어 유형

  * application/javascript
  * application/ecmascript

이 문서에도 정의되어 있으며 일반적인 사용을위한 것이며 대신 사용해야합니다.

이 문서는
text / javascript, text / ecmascript 및 application / javascript 유형에 대한 동등한 처리 요구 사항을 정의합니다 .
매체 유형 응용 프로그램 / 전자 스크립트의 사용 및 지원

이 문서에 정의 된 다른 매체 유형에 비해 훨씬 덜 널리 퍼져 있습니다. 이를 활용하여이 문서는
보다 상호 운용 가능한
처리 를 장려하기 위해이 유형에 대해보다 엄격한 처리 규칙을 정의합니다 .

x-javascript는 실험적이므로 사용하지 마십시오.

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