Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 响应AngularJS请求而发送的PHP Header()不考虑if语句_Javascript_Php_Angularjs - Fatal编程技术网

Javascript 响应AngularJS请求而发送的PHP Header()不考虑if语句

Javascript 响应AngularJS请求而发送的PHP Header()不考虑if语句,javascript,php,angularjs,Javascript,Php,Angularjs,这件事把我逼疯了 我在AngularJS中有一个服务,它在我发出任何请求的同时发送一个授权头 在PHP端,我可以成功地读取该头文件,并对其进行测试。如果身份验证令牌无效,我将发送401头 $auth_header = $_SERVER['HTTP_AUTHORIZATION']; $test = !valid($auth_header); //var_dump($test); if ($test) { header("HTTP/1.1 401 Unauthorized"); ex

这件事把我逼疯了

我在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一直告诉我,不管$test是真是假,它都会得到401。我做了一个vardump测试

如果我删除标题,它的工作原理与我预期的一样:如果$test由于退出而为false,则不返回任何内容;如果$test为true,则返回我想要的数据

然而,当我在标题中输入时,响应总是以401返回

这感觉就像标题忽略了if语句,我完全困惑了。我搜索了又搜索,找不到关于这个问题的任何信息,所以我觉得我做错了一件非常简单的事情。帮忙

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

错误的授权标头:

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

良好授权标头:

bool(false)[“JSON数据”]

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

无法加载XMLHttpRequest。无效的HTTP状态代码401


我解决了这个问题。发送选项请求时未应用Athorization标头,导致其返回为401

你能告诉我们你在var dump.oke的更多信息中添加了关于var dump.oke的var dump测试时得到了什么吗?但是正如你所看到的,测试是正确的,所以if部分按它应该做的那样工作,但是当报头在那里时,它会被发送,而我不知道为什么。更让人困惑的是,如果我用if(false){…替换if语句,它的工作原理与预期相同,并且不发送头。它可能与valid()函数有关。它返回什么?