Ответ 1
Это интересный вопрос. Не должно быть никаких причин для его возникновения, но вы должны учитывать несколько вещей:
- Заголовки должны быть уникальными для вашего приложения. Не только сейчас, но и навсегда. Вы должны убедиться, что вы их префикс, например.
X-MyApplication-Foo: Bar
. Не делать этого может привести к конфликтам в будущем. - Брандмауэры иногда (редко) немного переусердствуют с фильтрацией неизвестных HTTP-заголовков. Это не должно быть проблемой, но это нужно иметь в виду.
- У более старых браузеров меньше ограничений на размер полей заголовков, чем у современных браузеров, поэтому вам нужно протестировать столько, сколько вы можете получить.
Есть ли причина, по которой вы не можете использовать стандартные коды ошибок HTTP? Я понимаю, что вам может понадобиться предоставить трассировки стека или другую полезную информацию для отладки, но в случае ошибки не вы бы просто вернули бы кусок JSON, содержащий информацию об ошибках, а не обычные данные "результата" JSON? Вы можете легко обнаружить разницу на основе кода ошибки HTTP и обрабатывать два случая по-разному.
Причина, по которой я вас беспокою, заключается в том, что заголовки используются для изменения или поведения браузера - они не предназначены для хранения данных.
Пример псевдокода:
switch(httpResponseCode)
{
case 200:
parseResult(json);
break;
case 403:
parseForbidden(json);
break;
case 500:
parseServerError(json);
break;
default:
// bad response code, handle appropriately
}