我可以在 <img> 中使用不带扩展名的图像吗?

新手上路,请多包涵

可能重复:

在没有扩展名的情况下在网络上提供图像是否安全?

我想在页面中使用类似 <img src="advertisements/12" style="border: 1px solid"> 的内容。 FireFox 不会显示它,这让我觉得我必须为该文件设置一个文件扩展名。我就在这里(对于其他浏览器也是如此),还是 FF 喜欢 mime 类型?

编辑

我已经尝试了各种各样的东西,但它仍然无法正常工作。我现在正确地为文件添加了扩展名(例如,Flash 的 .swf)。我更改了目录等。当我调用 file_exists() 时,文件就在那里,很高兴等等,但是我绝对无法在页面上呈现它。它可以是 img 标签中的 .PNG,也可以是 Flash 对象。两者都不起作用。我做错了什么:-(另外,如果我将一个未上传的文件重命名为脚本正在寻找的文件,那工作正常,但上传的文件不…

原文由 Bojangles 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 749
2 个回答

是的,你应该可以。

浏览器最初不查看文件名,它们查看 HTTP 服务器响应中 Content-type 标头中列出的 MIME 类型。如果内容类型是 image/jpeg、png 或 gif 或其他类型,一切都很好,它会愉快地呈现图像。

如果没有有效的 MIME 类型,一些浏览器会尝试猜测该类型是什么。他们会查看被请求对象的扩展名,或者他们会查看前几个字节。如果失败,那么你会得到一个 redex。

这在 Firefox / Firebird 的早期曾引起一些麻烦,因为它对 MIME 类型很严格,并且经常拒绝呈现没有有效 MIME 类型的东西。 IE 做了一个猜测,那么多草率的 Web 服务器会提供在 IE 中可以正常呈现的页面,但在其他页面中却不行。不过,现在情况好多了。

因此,只要您的 Web 服务器在请求 img 对象时提供正确的 MIME 类型,您就可以开始了。如果您遇到问题,请检查在请求“广告/12”时您的 Web 服务器正在做什么。

原文由 whatsisname 发布,翻译遵循 CC BY-SA 2.5 许可协议

服务器返回什么?文件扩展名实际上没有用于任何用途。浏览器正在检查 Content-type 标头,它应该类似于 image/jpeg 或您正在提供的任何类型的图像。

这在动态提供图像的站点中经常使用,通常来自数据库。我见过很多图像 URL,例如 image.aspx?id=37 ,虽然它在技术上具有“扩展名”,但并不真正意味着它是图像。一切都在 HTTP 标头值中。

原文由 David 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题