PHP Header()在响应AngularJS请求时不管if语句如何发送

PHP Header() sent regardless of if statement in response to AngularJS Request

本文关键字:不管 if 语句 何发送 请求 AngularJS Header 响应 PHP      更新时间:2023-09-26

这让我很抓狂。

我在AngularJS中有一个服务,它会在我发出的任何请求旁边发送一个授权头。

在PHP端,我可以成功读取该头文件,并对其进行测试。如果身份验证令牌无效,则发送401报头。

$auth_header = $_SERVER['HTTP_AUTHORIZATION'];
$test = !valid($auth_header);
//var_dump($test);
if ($test) {
    header("HTTP/1.1 401 Unauthorized");
    exit;
}

我遇到的问题是AngularJS一直告诉我它正在获得401,无论$test是否为真或假。我通过vardump进行了测试。

如果我删除头,它就像我期望的那样工作:如果$test因为退出而为假,则不返回任何东西,如果$test为真,则返回我想要的数据。

然而,当我放入报头时,响应总是返回为401。

感觉标题忽略了if语句,我完全困惑了。我搜索了又搜索,找不到任何关于这个问题的信息,所以我觉得这是一个超级简单的事情,我做错了。帮助吗?

编辑当我取消var_dump($test)的注释时,我得到以下内容:

授权头错误:

bool(true)
Warning: Cannot modify header information -头已经发送(输出开始于/home/test/public_html/测试/api/sales.php: 19)/home/test/public_html/test/api/sales.php on line23

良好的授权头:

bool(false) ["JSON Data"]

然而,当我注释掉var_dump($test)时,我总是从AngularJS得到以下响应:

XMLHttpRequest无法加载http://fakeurl.com/test/api/sales.php。无效HTTP状态码401

我找到了问题所在。当发出OPTIONS请求时,没有应用authorization头,导致它以401的形式返回。