无论if语句响应AngularJS Request,都会发送PHP Header()

时间:2014-05-29 18:40:08

标签: javascript php angularjs

这让我起了墙。

我在AngularJS中有一个服务,它发送一个Authorization标头以及我发出的任何请求。

在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因为退出而返回false,则返回任何内容,如果$ test为true,则返回我想要的数据。

但是,当我放入标题时,响应总是以401返回。

感觉标题忽略了if语句,我感到非常困惑。我已经搜索过并搜索过,无法找到有关此问题的任何信息,所以我觉得这是一件非常简单的事情,我做错了。救命?

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

错误的授权标题:

  

bool(true)
警告:无法修改标题信息 -   已经发送的标题(输出开始于   /home/test/public_html/test/api/sales.php:19)in    /home/test/public_html/test/api/sales.php 在线    23

良好授权标题:

  

bool(false)[" JSON数据"]

然而,在我评论var_dump($ test)的那一刻,我总是从AngularJS得到以下响应。

  

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

1 个答案:

答案 0 :(得分:0)

我想出了这个问题。发出OPTIONS请求时,未应用Authorization标头,导致它作为401返回。