NGINX如何忽略MIME类型,JS文件中的PHP变量

时间:2018-11-15 22:06:50

标签: javascript php nginx mime-types nginx-config

我有一个称为JavaScript文件的PHP脚本,目的是在脚本中呈现一些服务器端变量,即:

<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.

即使脚本给出了header("Content-type: text/javascript; charset: UTF-8");,PHP也不会在JS文件中呈现:使用相同的技术似乎可以很好地呈现CSS文件。

我看不到NGINX配置中的任何地方添加了add_header X-Content-Type-Options nosniff;(也许我找不到正确的文件)。

是否有一种方法可以完全为站点禁用此MIME检查功能?谢谢!

1 个答案:

答案 0 :(得分:0)

这似乎是一种糟糕的做事方式。它不会使您的代码具有很高的可移植性,也不会被其他人轻易维护。您最好使用ajax调用并将变量作为post发送或以这种方式发送。这还需要做更多的工作,但是肯定会带来更好的代码。

此外,这当然意味着您无需进行任何Web服务器更改即可完成这项工作。

顺便说一句-这是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>