这是一个关于 Web 服务器如何处理 XML 文件请求的问题,具体取决于文件名中是否包含“.xml”后缀。
提前道歉,我不太熟悉网络服务器和浏览器在这种情况下的行为。
我在使用 Gatsby 时遇到了这个问题。在本地主机上开发。
出现这个问题是因为我观察到本地 gatsby 提供的 XML 文件的行为与其他主机提供的其他类似 XML 文件不同。我不确定这是否是一个转移注意力的问题。
好的,感谢您的阅读,以下是详细信息。
我有一个由 gatsby 提供的 xml 文件/资源(即使用 gatsbydevelop
或 gatsbyserve
)
如果我将文件命名为 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 文件时,与其他网站提供文件名时的行为不同(如上面的示例)?
到目前为止我已经尝试过解决这个问题。
使用/my-xml-file.xml 在本地提供文件,并在 Chrome 中打开
- 结果:Chrome 在浏览器窗口中加载/显示文件
使用/my-xml-file 在本地提供文件,在 Chrome 中打开
- 结果:Chrome 打开“另存为”对话框
重命名文件并作为/my-xml-file.rss,在 Chrome 中打开
- 结果:Chrome 在浏览器窗口中加载/显示文件
使用/my-xml-file.xml 在本地提供文件,在 Edge 中打开
- 结果:Edge 在浏览器窗口中加载/显示文件
使用/my-xml-file 在本地提供文件,在 Edge 中打开
- 结果:Edge 在浏览器窗口中加载/显示文件
通过 StackOverflow 搜索类似问题。找到以下内容(但似乎没有一个与此问题具体匹配
检查了我的本地示例中的响应 header ,并将其与上面的其他示例进行了比较。有一些东西引起了我的注意...
Content-type
响应中的值不同...
最佳答案
我想我根据对响应 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/