我使用 libmagic 在我的元素的 Web 界面中获取文件的 MIME 类型。我在 css 和 js 文件上得到文本/纯 mime 类型。
例如 chromium 显示以下警告:
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
...
我该如何解决这个问题?
最佳答案
不确定您在做什么需要这个。
通常您会通过扩展名、目录等知道哪些文件是什么。
最简单的方法是检查扩展——但我猜,出于某种原因,这不是一种选择。
您可以创建一个自定义函数来解析和检测 ecma 和 css:
if (mime==text/plain) { mime = my_parser(data); }
您可以使用验证器并检查它是否验证为 css 或 js。
您可以自己制作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
关于javascript - libmagic。 text/plain 而不是 text/javascript text/css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12494501/