Как установить кодовую часть HTTP-заголовка Content-Type на сервере IBM HTTPD?

У меня есть приложение, представляющее собой набор веб-служб Java и некоторый статический контент (HTML, XML, JavaScript и т. д.). Я знаю, что JavaScript имеет ограниченную возможную кодировку символов, но HTML и XML могут использовать различные кодировки символов. Я случайно знаю, что все эти файлы имеют кодировку UTF-8. Сервер приложений WebSphere, который я использую, правильно устанавливает Content-Type в 'text/html; charset=utf-8' для HTML, но не для JavaScript или XML. Они получают заголовок Content-Type, установленный на «application/javascript» и «text/xml» соответственно. Мои специалисты по безопасности говорят мне, что не указание кодировки для XML-файлов является уязвимостью. Помните, что это статические файлы.

Есть ли на веб-сервере IBM HTTPD (перед сервером приложений WebSphere) директива, которую я могу использовать для добавления кодировки символов в тип содержимого «текстовых» типов? Есть ли в WebSphere директива, которую я могу использовать для установки кодировки символов по умолчанию для текстовых типов? Я предполагаю, что после того, как я «исправил» это для файлов XML, меня попросят исправить это для файлов CSS, файлов JavaScript и т. Д. Я бы предпочел исправить это один раз и сделать это.

Если этот вопрос уже задавался ранее, укажите URL. Я нашел этот вопрос, но это не то же самое . Я изучаю возможность этот ответ, но есть много папок, и я бы предпочел не забывать добавлять файл .htaccess с этой директивой в каждую из них.


person Patrick O'Hara    schedule 30.03.2018    source источник


Ответы (1)


Вы можете просто добавить AddDefaultCharset utf-8 к httpd.conf, и все будет выходить с добавленной к нему кодировкой, даже контент, созданный сервером приложений. htaccess не нужен и бесполезен для содержимого сервера приложений.

Если вы обнаружите, что вам нужно внести в черный список корни контекста, расширения или что-то еще, подайте иск <LocationMatch> с AddDefaultCharset off.

К сожалению, Header edit Content-Type... не будет работать в IBM HTTP Server до V9. В V9 это позволяет вам легко выбрать текущий Content-Type:

Header always edit Content-Type ^(text/html)$ "$1 ; charset=utf8" Header always edit Content-Type ^(application/javascript)$ "$1 ; charset=utf8"

person covener    schedule 30.03.2018