spring-projects / spring-projects/spring-framework
Append "*/*" To The defaultContentTypes List
@rstoyanchev is already working on this.
Since Mar 22, 2021.
- Dominant language
- Java
- Stars
- 60.2k
- Forks
- 38.8k
- Avg merge
- 5d 2h
- Merged PRs (30d)
- 27
Description
If a default content type is set in the ContentNegotiationConfigurer, endpoints that don't return that type can return a 406. I've attached a very simple example.
Bug Explanation:
For an endpoint that produces some other content type (example in attached code is text/plain):
- Making a request without an Accept header will result in a 406
- Making a request with an Accept header of '*/*' will result in a 406
- Making a request with an Accept header of 'garbage/garbage,*/*' will result in 200
This behavior is wrong -- All of these should return a 200. Setting a default content type should not cause endpoints to result in 406. At a minimum, accept headers of 'garbage/garbage,*/*' and '*/*' should behave the same..
Extra explanation
Why are we setting a default content type? Because for nearly all endpoints, we want the returned content to be available as XML or JSON, and default to JSON if nothing else is specified.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.