Last June I reported this problem running Grav on Caddy and trying to access it from Apple machine.
This weekend I revisited it, and found a pragmatic solution. The responses to the browser were being sent using HTTP/2 but included a “connection: close” header which is invalid in that context. When I configured the Grav site in Caddy to block that header, the problem went away.
Since none of my other sites on Caddy have this problem, I can only suppose that the erroneous header is coming from Grav. Although I have a practical solution, I’d still be interested in finding out where the problem actually comes from, and whether there is a more direct configuration in Grav itself which would prevent it arising.