2012-09-19 11 views
2

libmagic을 사용하여 프로젝트의 웹 인터페이스에서 파일의 MIME 유형을 가져옵니다. 나는 css와 js 파일에 text/plain MIME 형식을 얻는다. 예를 들어 크롬libmagic. text/plain 대신 text/plain/javascript text/css

경고 아래 보여줍니다

Resource interpreted as Stylesheet but transferred with MIME type text/plain: "http://localhost:8000/jquery-ui.css". 
Resource interpreted as Script but transferred with MIME type text/plain: "http://localhost:8000/jquery.timers.js". 

HTTP를 대화

[email protected] ~ $ nc localhost 8000 
GET /ui.css HTTP/1.1 


HTTP/1.1 200 OK 
Connection: close 
Content-Length: 699 
Content-Type: text/plain; charset=us-ascii 
Date: Wed, 19 Sep 2012 11:41:48 GMT 

... 

어떻게이 문제를 해결할 수 있습니까?

+0

을 * 왜 * libmagic을 사용합니까? .css 및 .js의 마임 유형은 잘 정의되어 있으므로 추측 할 필요가 없습니다 (libmagic이하는 것). –

+0

다른 유형의 파일을 많이 사용합니다. 나는 그들의 마임 타입을 하드 코드하고 싶지 않다. –

답변

2

Apache와 동일한 작업을 수행해야합니다. MIME 유형에 대한 확장 데이터베이스를 참조하십시오. 실패하면 libmagic에 문의하십시오.

텍스트 및 XML 파일은 종종 libmagic이 파악하기에는 너무 일반적입니다. libmagic은 몇 바이트를 검사하여 파일 유형을 결정하기위한 용도로만 사용되므로 CSS와 JavaScript는 정확한 유형을 결정하기에 충분하지 않습니다. XML의 경우, libmagic은 파일이 XHTML, SVG, XHTML + SVG 또는 XHTML 및/또는 SVG를 생성하는 XSLT인지 여부를 판별하는 상당히 정교한 규칙을 가져야합니다. 그 범위를 벗어납니다.

3

필요한 것을 알지 못합니다. 하지만 어떤 이유로, 옵션이 아닙니다, 추측 -

보통 등 확장, 디렉토리

에 의해 가장 쉬운 확장자를 확인하는 것입니다 무엇을하는 파일을 알게 될 것입니다.

if (mime==text/plain) { mime = my_parser(data); } 

당신은 유효성 검사기를 사용하고 CSS 나 JS으로 유효성을 검사하면 확인할 수 있습니다

당신은 구문 분석 및 ECMA와 CSS를 감지하는 사용자 정의 함수를 만들 수 있습니다.

magic pattern file을 원하는대로 테스트 할 수 있습니다. 오히려 오류가 발생하기 쉽습니다. 예를 (매우 간체)에 대한

...

파일 my.magic :

0  search/4096 =function\ 
>&0  search/128  =) 
>>&0  search/128  ={    JavaScript 
!:mime application/javascript 

0  search/4096 ={ 
>&0  search/512  =transition- CSS3 
!:mime text/css 

0  search/4096 ={ 
>&0  search/512  =background: CSS 
!:mime text/css 

0  search/4096 ={ 
>&0  search/512  =color:   CSS 
!:mime text/css 

그런 다음 컴파일 :

$ file -C -m my.magic 

및 사용 :

$ file -im my.magic.mgc some_file