如何解决命中以文件扩展名结尾的端点时,HTTP 406错误
为解决此问题,专有信息已重命名/删除。
我们有一个弹簧支撑端点/api/getStuff/<stuff>
,其中<stuff>
由用户指定。
在大多数情况下,一切都很好。用户请求/api/getStuff/myThing
,他们将收到一个有关myThing
信息的json响应。更具体地说,响应的内容类型为application/json;charset=utf-8
但是,一个奇怪的用户发现一个问题,如果他们的事情以文件扩展名结尾,他们将得到406响应。例如:
/api/getStuff/myThing.txt
/api/getStuff/myThing.jpg
/api/getStuff/myThing.jar
所有这些都将返回406响应。我可以看到后端服务器中的代码已成功运行,并返回了json对象。但是,当在浏览器中点击URL时,它会返回406,似乎是给定类型的文件而不是application/json;charset=utf-8
之外的文件。
我已阅读What is "406-Not Acceptable Response" in HTTP?,并尝试指定一个值为application/json;charset=utf-8
或仅为application/json
的Accept标头,但这似乎不起作用,仍然返回406。
虽然我们不希望用户经常使用文件名来结束他们的事情,但我们不想限制可能影响已经存在的事物的命名约定。
请注意,此端点用于Web浏览器的内部ajax调用中,并且不会被用户直接击中,因此我们可以控制可以使用哪些标头。
编辑:刚刚确认请求已与标头Accept: application/json,text/javascript,*/*; q=0.01
一起发送
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。