我有一些客户端应用程序,它们将请求发送到没有Accept标头的端点。端点失败并显示“找不到可接受的表示形式”,但我还是希望控制器处理请求。
我正在编写一个处理REST API请求并返回OPDS提要的Java应用。当客户端发送请求并包含标头(在iOS上,所有客户端都包含“ accept = / ”)时,端点将按预期工作。
但是,当客户端(我在Android上测试过的所有内容)不包含此标头时,Spring不会将请求传递给控制器方法,而是返回HTTP 406响应而不是数据。
无论接受标头是否存在,我都希望调用controller方法,并且始终返回内容。
没有太多要显示的代码,因为这更多是集成问题。
所有iOS客户端均使用以下标头提交请求:
2019-04-27 14:07:16.362 DEBUG 74305 --- [nio-7171-exec-5] o.c.web.opds.OPDSRequestInterceptor : Header[accept]=*/*
2019-04-27 14:07:16.362 DEBUG 74305 --- [nio-7171-exec-5] o.c.web.opds.OPDSRequestInterceptor : Header[accept-language]=en-us
2019-04-27 14:07:16.362 DEBUG 74305 --- [nio-7171-exec-5] o.c.web.opds.OPDSRequestInterceptor : Header[connection]=keep-alive
2019-04-27 14:07:16.362 DEBUG 74305 --- [nio-7171-exec-5] o.c.web.opds.OPDSRequestInterceptor : Header[accept-encoding]=gzip, deflate
2019-04-27 14:07:16.362 DEBUG 74305 --- [nio-7171-exec-5] o.c.web.opds.OPDSRequestInterceptor : Header[user-agent]=Chunky/2.5.9002 CFNetwork/978.0.7 Darwin/18.5.0
但是Android客户端都发送了:
2019-04-27 14:02:06.724 DEBUG 74305 --- [nio-7171-exec-1] o.c.web.opds.OPDSRequestInterceptor : Header[connection]=Keep-Alive
2019-04-27 14:02:06.724 DEBUG 74305 --- [nio-7171-exec-1] o.c.web.opds.OPDSRequestInterceptor : Header[user-agent]=Apache-HttpClient/UNAVAILABLE (java 1.5)
我希望无论接收标头如何,方法都接收请求。