1

我有一个称为 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.

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

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

有没有办法完全为站点禁用此 MIME 检查功能?谢谢!

4

1 回答 1

0

这似乎是一种糟糕的做事方式。它不会使您的代码非常可移植,也不会很容易被其他人维护。您最好使用 ajax 调用并将变量作为帖子发送或以这种方式发送。这是一个多一点的工作,但肯定会产生更好的代码。

此外,这当然意味着您无需对 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>
于 2018-11-15T22:28:54.737 回答