【问题标题】:Illegal character in javascript with php header带有php标头的javascript中的非法字符
【发布时间】:2022-01-01 10:45:12
【问题描述】:

我正在使用 php 来捆绑 javascript 和 CSS 文件。

...
$js_files = ['path/to/script.js', 'path/to/jquery.js'];

header( "Content-type: application/javascript" );

foreach($js_files as $path){
   echo file_get_contents($path);
}
...

但是当我将它们添加到我的 HTML 页面时:

<script src="http://localhost:63342/project/assets/assets.php"></script>

它给了我语法错误Uncaught SyntaxError: illegal character U+0001

...function(){
   S.event.add(this�Yÿø��, t, i, r, n)
}...

�Yÿø�� 是非法字符串,但我的原始代码是正确的:

...function(){
   S.event.add(this, t, i, r, n)
}...

还尝试了readfile()mb_convert_encoding() 进行编码,但仍然无法正常工作!

编辑

手动正常工作:

<script src="http://localhost:63342/project/assets/jQuery/jquery.3.6.js"></script>

【问题讨论】:

  • 您必须更正 文件 的编码以匹配 Content-Type 标头中关于编码的内容。
  • 编码正确,直接 URL 正确,但内容类型不正确
  • 比较控制如何为这两种方法解释编码的 HTTP 标头。问题的某个地方。如果仍有疑问,请将原始输出与十六进制编辑器进行比较。
  • 字符编码只能部分转换。考虑到有一个 PHP 指令控制 Content-Type 标头,用相同的编码保存文件而不是为所有页面单独设置标头是最小的麻烦。
  • 感谢您的帮助。我的问题没有解决,所以我将包放在一个名为 bundle.js 的文件中并重定向到文件 URL。

标签: javascript php bundle


【解决方案1】:

您可以这样设置标题: header('Content-Type: text/html; charset=utf-8');

为了避免这个问题。

【讨论】:

    猜你喜欢
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多