首页 > 解决方案 > 为什么 Chrome 会尝试在 localhost 上下载/保存从 gatsby 提供的 xml 文件,而不是在文件名中缺少“.xml”后缀时显示在浏览器中?

问题描述

这是一个关于 Web 服务器如何处理 XML 文件请求的问题,具体取决于文件名中是否有“.xml”后缀。

提前道歉,我对 Web 服务器和浏览器在这种情况下的行为方式不是最熟悉的。

我在与Gatsby合作时遇到了这个问题。在本地主机上开发。

出现这个问题是因为我观察到本地 gatsby 提供的 XML 文件与其他主机提供的其他类似 XML 文件的行为不同。我不确定这是否是该问题的红鲱鱼。


好的,感谢您的阅读,这里是详细信息。

我有一个由 gatsby 提供的 xml 文件/资源​​(即使用gatsby developor gatsby serve

如果我将文件命名为类似的名称my-xml-file.xml,然后在浏览器(Chrome)中通过 导航到它http://localhost:8000/my-xml-file.xml,那么一切都很好。Chrome 在浏览器中加载/显示它。

但是,如果我将文件重命名为 just my-xml-file,即从文件名中删除“.xml”后缀,那么当我尝试在浏览器 (Chrome) 中通过 导航到它时http://localhost:8000/my-xml-file,Chrome 不会加载/显示它。相反,在这种情况下,Chrome 会打开一个“另存为”对话窗口。

有什么想法吗?

这让我感到困惑的原因是,如果我去网络上的其他位置,我知道这些位置是 xml 文件,这些文件没有“.xml”后缀,Chrome 很乐意在浏览器中加载/显示这些文件。

例如:

Chrome 直接在浏览器中加载/显示这些 URL

为什么当我提供文件名中没有 .xml 后缀的 xml 文件时,与其他网站提供的行为相比,我的行为会有所不同,例如上面的示例?


到目前为止,我已经尝试过解决这个问题。

标签: xmlgoogle-chromegatsby

解决方案


我想我根据对响应标头的调查找到了答案。

content-type应该为 xml 资源适当地设置值。

在我的本地主机上,名称中没有“.xml”后缀的文件被用作application/octet-stream.

它可能应该被用作类似application/rss+xml; charset=utf-8或可能的东西application/xml

还没有机会确认这一点,当我确认时会报告。


推荐阅读