3

libmagicを使用して、プロジェクトのWebインターフェイスでファイルのmimeタイプを取得します。cssおよびjsファイルでtext/plainmimeタイプを取得します。

たとえば、クロムは以下の警告を示しています。

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ダイアログ

alex@alex-laptop ~ $ 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

...

どうすればこれを修正できますか?

4

2 に答える 2

4

これを必要とするために何をしているのかわからない。

通常、拡張子、ディレクトリなどによって、どのファイルが何であるかがわかります。

最も簡単なのは拡張子を確認することですが、何らかの理由でオプションではないと推測します。

ecmaとcssを解析および検出するカスタム関数を作成できます。

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

バリデーターを使用して、それがcssまたはjsとして検証されるかどうかを確認できます。

独自のマジックパターンファイルを作成して、必要なものをテストできます。エラーが発生しやすくなります。

たとえば(非常に単純化されています)…</ p>

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
于 2012-09-19T15:39:07.210 に答える
3

Apacheと同じことを行う必要があります。MIMEタイプの拡張機能のデータベースを参照し、失敗した場合はlibmagicを参照してください。

テキストファイルとXMLファイルは、一般的すぎてlibmagicが理解できないことがよくあります。libmagicは、数バイトを調べることによってファイルタイプを判別することのみを目的としているため、CSSとJavaScriptは、正確なタイプを判別するには十分に区別されていません。XMLの場合、libmagicは、ファイルがXHTML、SVG、XHTML + SVG、またはXHTMLやSVGを生成するXSLTであるかどうかを判断するために、かなり洗練されたルールを持っている必要があります。それはその範囲を超えています。

于 2012-09-19T14:36:12.763 に答える