xml - 为什么 Chrome 会尝试在 localhost 上下载/保存从 gatsby 提供的 xml 文件,而不是在文件名中缺少“.xml”后缀时显示在浏览器中?
问题描述
这是一个关于 Web 服务器如何处理 XML 文件请求的问题,具体取决于文件名中是否有“.xml”后缀。
提前道歉,我对 Web 服务器和浏览器在这种情况下的行为方式不是最熟悉的。
我在与Gatsby合作时遇到了这个问题。在本地主机上开发。
出现这个问题是因为我观察到本地 gatsby 提供的 XML 文件与其他主机提供的其他类似 XML 文件的行为不同。我不确定这是否是该问题的红鲱鱼。
好的,感谢您的阅读,这里是详细信息。
我有一个由 gatsby 提供的 xml 文件/资源(即使用gatsby develop
or 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 文件时,与其他网站提供的行为相比,我的行为会有所不同,例如上面的示例?
到目前为止,我已经尝试过解决这个问题。
使用 /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 搜索类似问题。找到以下内容(但似乎没有一个与此问题特别匹配
检查了我本地示例中的响应标头,并将其与上面的其他示例进行了比较。有些东西引起了我的注意...响应中的价值
Content-type
不同...
解决方案
我想我根据对响应标头的调查找到了答案。
content-type
应该为 xml 资源适当地设置值。
在我的本地主机上,名称中没有“.xml”后缀的文件被用作application/octet-stream
.
它可能应该被用作类似application/rss+xml; charset=utf-8
或可能的东西application/xml
。
还没有机会确认这一点,当我确认时会报告。
推荐阅读
- python - 如何删除 NaN 列?
- python-3.x - 类 MarketingBusinessDetailView(generic.DetailView): syntaxError: 无效语法
- react-native - JSON 解析错误:无法识别的令牌'<' - 在 React Native 中
- postgresql - Postgresql 递归函数
- python - 将 git 克隆到虚拟 Python 环境的推荐工作流程
- python - Python在docx中一张一张插入图片
- python - 如何将字符串列表转换为python中的字典列表
- google-app-engine - Google Cloud 未正确安装软件包
- android - 如何将自定义字体应用于xamarin android中的导航抽屉项目
- java - JPA 连接表查询