Это странно. Я разработал минимальную веб-страницу http: //localhost/Default.htm на сервере IIS Windows 10, который демонстрирует ошибку.
<!DOCTYPE html>
<html>
<head>
<script src="script.js"></script>
<link href="script.css" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<script>
document.writeln("Got my ");
</script>
web page content
</body>
</html>
Однострочный script.js состоит из
alert('x');
Файл css
body {
font-family: arial;
}
Ссылка jquery предназначена для проверки внешних источников.
В Chrome страница загружается, а затем скачиваются 3 файла. На странице отображается
Получил содержимое моей веб-страницы
Предупреждение не отображалось, и стили css не работали
Скрипт JQuery в порядке. Файл script.js выдает ошибку
Uncaught SyntaxError: недопустимый или неожиданный токен
Ответ удивителен
污牥⡴挧⤧
Заголовки ответов выглядят нормально
HTTP/1.1 304 Not Modified
Accept-Ranges: bytes
ETag: "f4cca4492325d41:0"
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
Date: Thu, 26 Jul 2018 23:49:32 GMT
Chrome выдает вторую ошибку для in-page-script.js. Это плагин для Ember.js
Uncaught SyntaxError: недопустимый или неожиданный токен
Контент много
⨯ਪ⨠吠敨䌠牨浯湡楆敲潦⁸硥整獮潩獮椠橮捥⁴桴湩瀭条ⵥ捳楲瑰椠瑮桴...
Файл script.css похож на
潢祤笠††潦瑮昭浡汩㩹愠楲污഻紊
Теперь, если я загружаю файлы по отдельности в том же браузере Chrome (в Инструменты разработчика> Сеть> щелкните правой кнопкой мыши script.js и откройте в новом окне)
Они правы. Эта проблема кажется очевидной только для файлов, связанных со страницами.
FireFox загружает все файлы, но выдает те же ошибки, что и Chrome
SyntaxError: недопустимый символ [Подробнее] script.js: 1: 2
Ответ
alert('x');
IE и Edge просто работают и у них нет проблем (я никогда не думал, что скажу так) с этой страницей.
Лечебные действия, которые я использовал с пулами приложений, кодировками, кэшированием, шифрованием диска, типами MIME. Ничего из того, что я пробовал, не работает. Я думаю, что я каким-то образом повредил IIS при работе с iisnode, поскольку это второй сервер IIS, у которого была такая же проблема. Более ранний сервер одинаково влиял на все веб-браузеры, что приводило к одинаковым китайским / корейским / японским символам.
Я в недоумении. Любые подсказки будут полезны
Спасибо, Лекс Ли.
Оказывается, кодировка страницы, ссылающейся на скрипт или файл css, влияет на то, как содержимое файла интерпретируется в браузере.
Тег script имел атрибут charset (устаревший), который, если он не присутствует, по умолчанию используется для кодировки страницы для Chrome и, возможно, Firefox. Возможно, они по-прежнему определяют кодировку указанного файла js или css, используя кодировку ссылающейся страницы.
Похоже, что Edge (и IE), FF и Chrome по-разному интерпретируют эту кодировку.
Я изменил кодировку страницы Default.htm, и страница заработала. Искал не в том месте (файлы js и css). Каким образом нужно закодировать файл Default.htm в UTF16 LE, для меня загадка.