php脚本无法发送标头,因为标头已经发送,但是脚本之外的字符

gan*_*oya 1 php header

这是我的前两行:

<?php
header('Content-Type: application/x-javascript');
Run Code Online (Sandbox Code Playgroud)

它给了我第1行已发送的标题.

它旨在生成一个从HTML页面加载的JavaScript文件,当从Firebug中检查JavaScript文件时,我得到了以下文件:

1  <br />
2  <b>Warning</b>: Cannot modify header information - headers already sent by (output started at C:\Program Files\Apache Group\Apache2\htdocs\totoro\Js\libs.php:1) in <b>C:\Program Files\Apache Group\Apache2\htdocs\totoro\Js\libs.php</b> on line <b>1</b><br />
3  var Totoro = {}, $t = Totoro;
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,它会吐出一个看起来像垃圾字符的字符,但没有任何内容被发送,第一行是header函数调用.可能是什么问题?

oll*_*lle 13

您最有可能将文件保存为带有BOM(字节顺序标记)的UTF-8,将其重新保存为UTF-8而没有说明.


Gum*_*mbo 7

此字符序列是UTF-8 BOM.使用UTF-8时,保存没有BOM的文件(有时也称为签名).

此外,您应该声明您正在使用的编码.因为UTF-8 BOM显示为您命名的字符,所以您的数据可能用ISO 8859-1解释,因为UTF-8 BOM字节序列0xEFBBBF表示字符ï(0xEF),»(0xBB)和¿(0xBF) ISO 8859-1.

因此,删除BOM并使用此Content-Type标头字段以及正确的MIME类型application/javascriptcharset参数:

Content-Type: application/javascript;charset=utf-8
Run Code Online (Sandbox Code Playgroud)