in Профессиональное

Решение проблем с ajax на nginx/apache в Internet Explorer (IE)

Часто вижу сообщения о проблемах nginx и ajax в IE.

Конечно я не могу ручаться за каждый конкретный случай, но осмелюсь предположить, что проблема может быть связана с кодировкой, точнее с наименованием кодировки, которое передается в ответе веб-сервера. Я уже писал о похожей проблеме ранее (Cистемная ошибка: -1072896658). Ниже проведу небольшой ликбез с описанием необходимых настроек веб-серверов.

Итак, суть проблемы: неверное наименование кодировки UTF-8. Вы можете написать в настройках apache/nginx все что угодно (как правило UTF8 без дефиса), но IE ожидает название этой юникодной кодировки именно с дефисом: UTF-8. И никак иначе (любопытно что другие браузеры к этому более терпимы, а если учесть то, что девелоперы любят firefox, то, ручаюсь, эта ошибка попортила немало крови и нервов).

Для apache нам нужно проверить или добавить директиву AddDefaultCharset в виртуальный хост (или .htaccess, если доступа к вирутальному хосту не имеете):

<VirtualHost 127.0.0.1:80>
 ...
 <Directory /path/to/your/document/root>
 AddDefaultCharset UTF-8
 </Directory>
 ...
</VirtualHost>

Имейте в виду что директива может быть в наличии, но название кодировки в ней может быть написано неверно (UTF8 вместо UTF-8).

И если у вас неправильную кодировку дает nginx. Смотрим в документацию ngx_http_charset_module:

Директива charset. Для кодировок utf-8, windows-1251 и koi8-r для этого достаточно включить в конфигурацию файлы conf/koi-win, conf/koi-utf и conf/win-utf.

В принципе вы можете попробовать явно включить эту директиву в конфигурацию nginx (в директивы http, server, location, или if в location):

#context: http, server, location, if в location
charset     utf-8;

Также обращайте внимание на написание кодировки с дефисом.

P.S. Я использую nginx как прокси, поэтому с ним у меня подобной проблемы не было. А вот с apache, каюсь, была )

P.P.S. Недеюсь, этот небольшой ликбез будет полезен – в любом случае пишите отзыв, учтем, исправим )

Write a Comment

Comment

ERROR: si-captcha.php plugin: GD image support not detected in PHP!

Contact your web host and ask them to enable GD image support for PHP.

ERROR: si-captcha.php plugin: imagepng function not detected in PHP!

Contact your web host and ask them to enable imagepng for PHP.

  1. Не могу не поблагодарить, меня тоже спасла ваша статья! В htacces добавил дефис и заработало! Спасибо!