Почему мне пришлось отключить HTTP / 2 в AWS Application Load Balancer, чтобы предотвратить ERR_SPDY_PROTOCOL_ERROR? - PullRequest
0 голосов
/ 09 января 2019

Когда я развернул свое веб-приложение в среде AWS с Application Load Balancer (ALB) , некоторые конечные точки моих веб-служб не возвращали никаких данных, и мой браузер Chrome сообщал об этой ошибке для некоторых http звонки: ERR_SPDY_PROTOCOL_ERROR

Найдя эту рекомендацию , я отключил поддержку HTTP / 2 в моей конфигурации ALB, и теперь все работает.

Почему мне пришлось отключить HTTP / 2 в моем ALB? В чем здесь корень проблемы? Нужно ли что-то изменить в своем коде веб-службы, чтобы я мог использовать HTTP / 2 ?

UPDATE

Вот заголовки ответа:

HTTP/1.1 200
Date: Wed, 09 Jan 2019 21:39:13 GMT
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Locations Reached: Data to populate locations reached map

Как следует из одного из приведенных ниже ответов, виновником, вероятно, является тот факт, что в одном из моих заголовков («Достигнутые местоположения») есть пробел в имени, который недействителен / неправильно сформирован. Я позабочусь о том, чтобы место было заменено на тире.

1 Ответ

0 голосов
/ 10 января 2019

Обычно означает, что у вас неверный заголовок HTTP / 2. В этом отношении HTTP / 2 является более строгим, чем HTTP / 1.1.

Так что имена заголовков HTTP с двоеточиями, пробелами, новыми строками (например, открывающие кавычки, но забывающие закрыть кавычки в вашей конфигурации) и тому подобное в имени недопустимы (они могут существовать в значениях заголовка, но не в именах) .

Подробнее об отладке см. Здесь: https://www.michalspacek.com/chrome-err_spdy_protocol_error-and-an-invalid-http-header.

Добавьте заголовки ответов HTTP / 1.1 к своему вопросу и, возможно, сможете указать правильное направление.

...