xml - 如果文件名中缺少 '.xml' 后缀,为什么 Chrome 会尝试下载/保存从 localhost 上的 gatsby 提供的 xml 文件,而不是在浏览器中显示?

标签 xml google-chrome gatsby

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

提前道歉,我不太熟悉网络服务器和浏览器在这种情况下的行为。

我在使用 Gatsby 时遇到了这个问题。在本地主机上开发。

出现这个问题是因为我观察到本地 gatsby 提供的 XML 文件的行为与其他主机提供的其他类似 XML 文件不同。我不确定这是否是一个转移注意力的问题。


好的,感谢您的阅读,以下是详细信息。

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

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

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

知道这里发生了什么吗?

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

例如:

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

为什么当我提供文件名中不带 .xml 后缀的 xml 文件时,与其他网站提供文件名时的行为不同(如上面的示例)?


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

最佳答案

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

应针对 xml 资源适当设置 content-type 的值。

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

它可能应该以 application/rss+xml 的形式提供; charset=utf-8 或可能 application/xml

尚未有机会确认这一点,确认后会报告。

关于xml - 如果文件名中缺少 '.xml' 后缀,为什么 Chrome 会尝试下载/保存从 localhost 上的 gatsby 提供的 xml 文件,而不是在浏览器中显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60160495/

相关文章:

java - 模式版本可以与 jar 文件不同吗?

mysql - 将 CSV 或 XML 导入 MySQL

android - Android 中的滑动动画

java - 在浏览器的正常 UI 模式下使用 Selenium-Java 运行测试的 headless (headless) chrome

javascript - 删除全屏窗口装饰/边框 Chrome OS 应用程序/信息亭模式

google-chrome - 在 Chrome 应用程序中使用证书进行 SSL 客户端身份验证

javascript - 如何使用 gatsby-image 添加内联图像?

xml - 将 Oracle 行序列化为 XML

Markdown 在 GatsbyJS 中无法正确显示

reactjs - 如果导航到新路径则更改 react 状态