Мы посылаем запросы XHR к нашему бэкэнду, получая таким образом такого рода объекты реагирования (независимо от браузера):С HTTP/2 только, `statusText` свойство XMLHttpRequest ответов, как представляется, агент пользователя определяется
{
status: 200,
statusText: "OK",
config: {...},
data: {...}
}
Мы просто перешли на другой балансировщик нагрузки, который поддерживает HTTP/2. По какой-то причине statusText
свойство в настоящее время различается в зависимости от браузера:
Chrome (56.0.2924.87):
{
status: 200,
statusText: "", // empty
config: {...},
data: {...}
}
Firefox (51.0.1):
{
status: 200,
statusText: "OK", // as previously (+1)
config: {...},
data: {...}
}
Сафари (10.0.3):
{
status: 200,
statusText: "HTTP/2.0 200", // ?!
config: {...},
data: {...}
}
У нас был устаревший код, который читал это свойство statusText
, поэтому некоторые действия были сломаны. Это было легко исправлено (так что в конце концов это неплохо), но все же, почему остается ... Любая идея, что происходит?
Боковые ноты:
Мы используем AngularJS 1.x, но it is simply copying this
statusText
property from the XHR response, так что это не должно быть проблемой Угловое.Как кажется, это зависит от браузера, это не должно быть проблемой балансировки нагрузки ... Я не прав? (DevOps мозги нужны)
я тогда ожидал найти в некоторых спецификациях что-то вроде «
statusText
является агентом пользователя определяется, так что вы не должны полагаться на него» (just like Storage#key(...), например), но ни MDN, ни Fetch standard предоставляет информацию об этом объекте.
Интересно, я лично понял это предложение как «* сервер возвращает статус (например, 200, 403), а' statusText' содержит соответствующее сообщение о состоянии *. Другими словами, «сервер отвечает только за статус», поэтому «что-то» отвечает за заполнение этого имущества, но я, возможно, неправильно понял. А также, если это была сторонняя сторона, то это должно было произойти через HTTP/1.x, а также ИМХО, что вы думаете? – sp00m
Это не то, как я это интерпретирую. На самом деле, не имеет смысла ни для чего, кроме сервера, для отправки как «status», так и «statusText», поскольку будущие изменения в HTTP могут привести к новым ответам.Именно поэтому я считаю, что ваш переключатель в HTTP/2 в новой балансированной нагрузке среде является виновником. Я не думаю, что клиенты вовлечены вообще (за исключением отправки их строки пользовательского агента на сервер). –
Большое спасибо за ваши мысли, я дважды проверю эти спецификации балансировки нагрузки, тогда я буду держать вас в курсе :) – sp00m