库魔法。 text/plain 而不是 text/javascript text/css

     2023-03-15     144

关键词:

【中文标题】库魔法。 text/plain 而不是 text/javascript text/css【英文标题】:libmagic. text/plain instead of text/javascript text/css 【发布时间】:2012-09-11 17:59:23 【问题描述】:

我使用 libmagic 在我的项目的 Web 界面中获取文件的 mime 类型。我在 css 和 js 文件上获得 text/plain 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

...

我该如何解决这个问题?

【问题讨论】:

为什么你为此使用 libmagic? .css 和 .js 的 mime 类型定义明确,您无需猜测它们(这几乎就是 libmagic 所做的)。 我使用了很多不同类型的文件。我不想硬编码他们的 mime 类型。 【参考方案1】:

不确定您需要这个做什么。

通常您会通过扩展名、目录等知道哪些文件是什么。

最简单的方法是检查扩展 - 但猜测出于某种原因,这不是一种选择。

您可以制作自定义函数来解析和检测 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

【讨论】:

【参考方案2】:

您需要做与 Apache 相同的事情:查阅 MIME 类型的扩展数据库,如果失败,请查阅 libmagic。

文本和 XML 文件通常过于通用,libmagic 无法识别。 libmagic 仅用于通过检查几个字节来确定文件类型,因此 CSS 和 JavaScript 的区别不足以确定它们的确切类型。对于 XML,libmagic 必须有相当复杂的规则来确定文件是 XHTML、SVG、XHTML+SVG,还是生成 XHTML 和/或 SVG 的 XSLT。这超出了它的范围。

【讨论】:

使用 application/json 优于 text/plain 的优势? [关闭]

...】:使用内容类型application/json发送序列化为json的对象而不是text/plain有任何性能优势吗?我知道许多框架(如Spring)可以根据内容类型映射和序列 查看详情

EventSource 的响应具有不是“text/event-stream”的 MIME 类型(“text/plain”)

】EventSource的响应具有不是“text/event-stream”的MIME类型(“text/plain”)【英文标题】:EventSource\'sresponsehasaMIMEtype("text/plain")thatisnot"text/event-stream"【发布时间】:2016-08-3010:29:45【问题描述】:。中止连接。为什么我... 查看详情

无法连接到 Spring Cloud + Hystrix + Turbine 中的 Command Metric Stream - MIME 类型(“text/plain”)不是“text/event

】无法连接到SpringCloud+Hystrix+Turbine中的CommandMetricStream-MIME类型(“text/plain”)不是“text/event-stream”【英文标题】:UnabletoconnecttoCommandMetricStreaminSpringCloud+Hystrix+Turbine-MIMEtype("text/plain")thatisnot"text 查看详情

使用 CORS 在 WebAPI 中将 text/plain 作为复杂对象发布

...服务器。不幸的是,IE8只支持在使用CORS时发送text/plain而不是application/json。有没有办法在We 查看详情

WebApi v2 不接受 text/plain 媒体类型

】WebApiv2不接受text/plain媒体类型【英文标题】:text/plainMediaTypenotbeingacceptedforWebApiv2【发布时间】:2017-01-1507:43:38【问题描述】:这个问题从IE9开始,对于POST请求,contentType必须是text/plain,而application/json将不起作用。我添加了moo... 查看详情

使用 SwiftMailer 为 text/html 和 text/plain 使用附件

】使用SwiftMailer为text/html和text/plain使用附件【英文标题】:Useanattachmentforbothtext/htmlandtext/plainwithSwiftMailer【发布时间】:2017-03-0522:56:24【问题描述】:我正在使用swiftmailer发送电子邮件,我希望有相同的附件:*HTML版本(text/html)作... 查看详情

nodejs怎么把html以源码的形式在网页中显示了,而不是解析它

可以通过设置输出到浏览器的\'Content-Type的值为text/html即文本类型的html即可实现将html代码发送到浏览器中解释,而如果设置的值为text/plain则值会显示为文本而不会被浏览器渲染。代码实例如下:const http = require(\'http\');const ho... 查看详情

为啥 Outlook 不使用 text/plain 部分?

】为啥Outlook不使用text/plain部分?【英文标题】:Whywon\'tOutlookusethetext/plainpart?为什么Outlook不使用text/plain部分?【发布时间】:2013-10-0817:59:27【问题描述】:首先,你好,使用SwiftMailer,我正在发送HTML+PLAIN电子邮件。在Outlook上,... 查看详情

php内容类型text/plain(代码片段)

查看详情

此资源不支持请求实体的媒体类型“text/plain”

】此资源不支持请求实体的媒体类型“text/plain”【英文标题】:Therequestentity\'smediatype\'text/plain\'isnotsupportedforthisresource【发布时间】:2017-07-0508:01:52【问题描述】:我正在编写一个带有POST请求的服务:[HttpPost][ActionName("Post")]publi... 查看详情

如何在 Akka HTTP 中将“text/plain”解组为 JSON

】如何在AkkaHTTP中将“text/plain”解组为JSON【英文标题】:Howtounmarshall`text/plain`asJSONinAkkaHTTP【发布时间】:2016-03-2300:52:27【问题描述】:我正在使用一个旧的HTTPAPI(我无法更改),它在正文中使用JSON进行响应,但会提供一个Conte... 查看详情

为啥mp4视频的内容类型可以是text/plain?

】为啥mp4视频的内容类型可以是text/plain?【英文标题】:Whythecontenttypeofamp4videocanbetext/plain?为什么mp4视频的内容类型可以是text/plain?【发布时间】:2011-07-0200:18:46【问题描述】:我正在开发一个可以接收文件url的应用程序,并... 查看详情

一个接口返回contenttype=text/plain的数据,在前端怎么处理

springboot项目,在接收text/plain格式的时候,无法通过@requestBody得到请求中的json信息,需要对请求中的参数进行解析。异常type'text/plain;charset=UTF-8'notsupported。/***解析text/plain格式请求中的json**@paramrequest*@return*/publicstaticStringfet... 查看详情

在带有附件的电子邮件中将内容类型从 text/plain 转换为 text/html

】在带有附件的电子邮件中将内容类型从text/plain转换为text/html【英文标题】:Convertcontent-typefromtext/plaintotext/htmlinanemailwithattachment【发布时间】:2014-08-1818:58:55【问题描述】:我正在尝试显示从服务器获取的电子邮件。在让您知... 查看详情

method="post" enctype="text/plain" 不兼容?

】method="post"enctype="text/plain"不兼容?【英文标题】:method="post"enctype="text/plain"arenotcompatible?【发布时间】:2011-11-2912:07:58【问题描述】:当我使用时<formmethod="post"enctype="text/plain"action= 查看详情

使用: text/plain; 有啥缺点吗?字符集="UTF-8"

】使用:text/plain;有啥缺点吗?字符集="UTF-8"【英文标题】:Isthereanydisadvantageofusing:text/plain;charset="UTF-8"使用:text/plain;有什么缺点吗?字符集="UTF-8"【发布时间】:2013-07-2920:39:43【问题描述】:我的网络服务器... 查看详情

sublime指定打开某文件的类型(text/plain)

看下图,点击openallwidth...选取你指定文件,以后打开都是你指定文件类型 查看详情

与 text/plain ContentType 一起使用的正确换行符是啥?

】与text/plainContentType一起使用的正确换行符是啥?【英文标题】:Whatisthecorrectnewlinetousewithtext/plainContentType?与text/plainContentType一起使用的正确换行符是什么?【发布时间】:2015-08-1117:16:44【问题描述】:当网络服务器在HTTP响应... 查看详情