curl (se compilado com suporte a HTTP / 2) exibe o mesmo problema, mas mostra o motivo:
http2 error: Invalid HTTP header field was received: frame type: 1, stream: 1, name: [upgrade], value: [h2,h2c]
Parece que seu servidor está oferecendo uma atualização para HTTP / 2, embora a conexão já seja feita com HTTP / 2 - o que não faz sentido. Não só isso, é explicitamente proibido. De RFC 7540 seção 8.1.2.2 :
An endpoint MUST NOT generate an HTTP/2 message containing connection-specific header fields; any message containing connection-specific header fields MUST be treated as malformed (Section 8.1.2.6).... connection- specific header fields, such as Keep-Alive, Proxy-Connection, Transfer-Encoding, and Upgrade
Parece-me um bug, já que o Apache não deve enviar este cabeçalho com HTTP / 2.
Meu palpite é que você tem uma configuração como essa
Protocols h2 h2c http/1.1
Dado que os navegadores não suportam HTTP / 2 sem TLS e que não é necessário nenhum cabeçalho de Upgrade com HTTP / 2 através de TLS, recomendo que você substitua esta configuração por
Protocols h2 http/1.1
Isso desabilita o suporte para o desnecessário HTTP / 2 sem TLS, mas deve se livrar do cabeçalho Upgrade desta forma, já que isso é necessário apenas para a atualização do HTTP simples para o HTTP / 2 simples.
EDIT: de acordo com o comentário do OP mudar a configuração Protocols
não ajudou. Foi necessário trabalhar explicitamente com esse comportamento (ou seja, bug) de mod_http2
, excluindo o cabeçalho Upgrade
:
Header unset Upgrade