У меня есть сценарий PHP, который называется файлом JavaScript, чтобы визуализировать некоторые переменные на стороне сервера внутри сценария, т.е.
<script src="script.js.php?var1=x&var2=y"></script>
Этот метод отлично работает с Apache, но с NGINX браузер не загружает скрипт из-за строгой проверки MIME. Я получаю эту ошибку в Safari:
Refused to execute https://mydomain/script.js.php?var1=x&var2=y as script because "X-Content-Type: nosniff" was given and its Content-Type is not a script MIME type.
PHP не рендерится в файле JS, хотя скрипт дает: header("Content-type: text/javascript; charset: UTF-8");
Похоже, что визуализировать файл CSS очень хорошо, используя эту же технику.
я не вижу add_header X-Content-Type-Options nosniff;
добавлено где-нибудь в конфигурации NGINX (возможно, я не нахожу нужный файл).
Есть ли способ полностью отключить эту функцию проверки MIME для сайта? Спасибо!
Это кажется ужасным способом сделать что-то. Это не делает ваш код очень переносимым или легко поддерживаемым кем-то другим. Вам лучше использовать ajax-вызов и посылать ваши переменные как post или получить таким образом. Это немного больше работы, но определенно делает для лучшего кода.
Кроме того, это, конечно, означает, что вам не нужно вносить какие-либо изменения веб-сервера, чтобы это работало.
КСТАТИ — Это JQuery AJAX, настроить по своему усмотрению. JQuery не требуется, это просто легче заглушить.
<script>
var var1 = '<?php echo $var1; ?>';
var var2 = '<?php echo $var2; ?>';
var dataStream = { 'var1' : var1, 'var2' : var2 };
$.ajax({
method: "POST",
url: "some.php",
data: dataStream,
dataType: 'json',
}
</script>
Других решений пока нет …