Skip to content

Ошибка: Invalid non-ASCII or control character in header #117

@Stivo182

Description

@Stivo182

Проблема

Когда устанавливаешь в редирект URL, который содержит, например кирилические символы (напирмер в query string), то возникает следующая ошибка при открытии страницы:

НативныйВебСервер.os / Ошибка в строке: 65 / Внешнее исключение (System.InvalidOperationException): Invalid non-ASCII or control character in header: 0x0444}
  Контекст.Ответ.Заголовки[Элемент.Ключ] = Элемент.Значение;

Причина: HTTP-заголовки поддерживают только ASCII-символы.

Решение

Необходимо кодировать значения заголовков, чтобы они содержали только допустимые ASCII-символы в классе:

Контекст.Ответ.Заголовки[Элемент.Ключ] = Элемент.Значение;

Для Каждого Элемент Из Заголовки Цикл
	Контекст.Ответ.Заголовки[Элемент.Ключ] = КодироватьСтроку(Элемент.Значение, СпособКодированияСтроки.URLВКодировкеURL);
КонецЦикла;

Но нужно проверить всегда ли ее нужно применять, т.к. значение могло быть закодировано ранее.

Upd:

Лучшим вариантом считаю в методе Перенаправить кодировать значение:

Заголовки["Location"] = НовыйАдрес;

Процедура Перенаправить(НовыйАдрес) Экспорт
	УстановитьСостояние(302);
	Заголовки["Location"] = КодироватьСтроку(НовыйАдрес, СпособКодированияСтроки.URLВКодировкеURL);
КонецПроцедуры

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions