NGINX Как игнорировать типы MIME, переменные PHP в файле JS - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть 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 для сайта?Спасибо!

1 Ответ

0 голосов
/ 16 ноября 2018

Это похоже на ужасный способ делать вещи. Это не делает ваш код очень переносимым или легко поддерживаемым кем-то другим. Вам лучше использовать 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>
...