我有一个称为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检查功能?谢谢!
答案 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>