【问题标题】:Cant set HTTP header with PHP [duplicate]无法使用 PHP 设置 HTTP 标头 [重复]
【发布时间】:2012-10-10 13:19:17
【问题描述】:

可能重复:
Headers already sent by PHP

我正在尝试为我正在制作的应用程序编写 JSON API。它在 PHP 中。在 PHP 脚本的开头,我尝试检查是否所有 GET 参数都存在,如果不存在,则服务器应发送 400 - Bad Request 标头。

代码如下所示:

//CHECK CONDITIONS
if (isset($GET["clat"]) && isset($GET["clng"]) && isset($GET["limit"]))
{
//do stuff
} else {
header( "HTTP/1.0 400 Bad Request");
exit;
}

服务器只是提供一个带有 200 - OK 标头的空页面。所以我在另一个网络服务器上对其进行了测试,它似乎确实可以工作。

显然服务器出了点问题。我该如何解决这个问题?

编辑 我似乎找到了导致标题始终为 200-OK 的行。在 PHP 的开头,我包含了另一个带有一些 mySQL 连接参数的 php 文件。当我注释掉 include 'setup.php'; 行时,它起作用了。 setup.php 包含以下内容:

 // Connects to Our Database 
 mysql_connect("#####", "#####", "######") or die(mysql_error()); 
 mysql_select_db("####") or die(mysql_error()); 

如何在之后发送不同的 HTTP 标头的同时保留外部数据库信息?

提前致谢。

【问题讨论】:

  • 你可以使用任何类型的headers吗?

标签: php apache http header


【解决方案1】:

检查你包含的文件是否在文件开头没有UTF BOM,关闭后没有任何文本?>,因为如果有,PHP会自动发送标题

【讨论】:

  • 包含的文件只包含我上面粘贴的代码,由
  • 尝试从文件中删除结尾 ?> 标记,因为它们不是必需的,如果您的文件只是 php 代码,并检查主文件以及 BOM
  • 您的回答让我找到了解决方案。 ?> 后面有一个空格。非常感谢!
【解决方案2】:
header( "HTTP/1.0 400 Bad Request", true, 400);

【讨论】:

  • 感谢您的帮助。请检查已编辑的问题。
【解决方案3】:

试试这个方法:

<?php
header("Status: 400 Bad Request");
?>

【讨论】:

  • 感谢您的帮助。请检查已编辑的问题。
猜你喜欢
  • 2010-11-11
  • 2010-09-19
  • 2019-04-29
  • 1970-01-01
  • 2015-07-29
  • 2018-12-17
  • 2016-03-19
  • 1970-01-01
相关资源
最近更新 更多