ICS文件的MIME类型

29

我试图将一个ics文件上传到我的网站。它是从Mac OSX上的iCal导出的。我认为ics文件的MIME类型应该是text/calendar,但由于某些原因,这个文件似乎是Application/octet-stream类型。这使得上传未能通过验证测试。有人有任何想法,为什么类型不符合我的预期?!

3个回答

32

1
他正在尝试上传一个ics文件。 - Pekka
18
具有讽刺意味的是,这个回答对于像我一样搜索了错误术语,但由于他的假设获得了正确答案的人很有用。+1 - QuickDanger
3
谢谢!对我来说,添加 header("content-type:text/calendar"); 是有效的。干杯。 - RockwoodON

11

浏览器决定了MIME类型,似乎你的浏览器不知道ics文件的正确MIME类型。没关系,跳过MIME检查,进行一些结构分析(是否有有效的头部,是否存在任何日历记录等)。

对于验证来说,MIME类型非常有限,因为客户端可以自由修改它。


1
哥们儿,你刚才说它是由浏览器确定的,但客户端可以自由修改 - 到底是什么? - jckdnk111
谢谢您的建议。我一定会使用不同的验证过程。但是,我还有点困惑。如果我直接在浏览器窗口中打开文件,它会正确显示内容。 - musoNic80
3
这取决于浏览器(即客户端)。攻击者可以模拟浏览器并自由地修改它。你还有什么不清楚的? - Pekka
@Pekka 你告诉我!!!我认为最好的方法是像你之前建议的那样检查文件扩展名和内容细节。在打开文件查看内容之前,还有其他检查可以确保文件安全吗? - musoNic80
ics是什么类型的文件?基于XML吗?如果是的话,即使有人试图上传恶意文件,我认为也不会出现太大问题:XML只是不会被呈现。 - Pekka
显示剩余3条评论

1
我来发表一下我的看法。通常,浏览器会查看服务器发送的头文件以确定MIME类型。如果服务器没有发送MIME类型,则好的浏览器会猜测,而IE通常不会。jckdnk111发布的上面的Apache文档链接是一个很好的资源。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接