php – 如何在rest API中传递令牌?
参见英文答案 >
RESTful Authentication????????????????????????????????????14个
我是第一次探索REST API的世界,我已经不得不通过使用Slim来处理它,但现在我想成为一个自制的解决方案,考虑到我不需要任何框架来制作一个简单的休息Api. 我所做的是创建一个这样的页面: <?php $method = $_SERVER['REQUEST_METHOD']; $request = explode("/",substr(@$_SERVER['PATH_INFO'],1)); switch ($method) { case 'PUT': echo "PUT"; break; case 'POST': echo "POST"; break; case 'GET': echo "GET"; break; case 'DELETE': echo "DELETE"; break; default: handle_error($request); break; } 我的目标是实现一个访问令牌,我想在标题中传递它但我不确定(我正在寻找一种安全模式).但是,如果我从命令行运行它: curl -X GET http://localhost/v1 我得到GET,只是举例说明它应该如何工作.所有其他询问都是如此.现在真正的问题是:只有在我传递令牌时,如何调用交换机中的方法?例如,在页面顶部将执行控件将进行这样的检查: if(!isset($_SERVER['AUTH_USER'])) { exit('TOKEN not provide'); } 另一个问题是如何通过curl传递令牌?因为如果我通过…… 更新: 正如@Paradoxis所提到的,我试过: url http://localhost/v1 -H "Authorization: <token>" 但似乎我没有采取标题.我花时间了解为什么标题没有传递,所以在我的代码中我添加了这一行: print_r(apache_request_headers()); 这就是结果: Array ( [Host] => localhost [User-Agent] => curl/7.46.0 [Accept] => */* [Authorization] => <token> ) 如何在request_headers中看到我在标题中可以正确看到,但我无法通过使用$_SERVER [‘Authorization’]或$_SERVER [‘HTTP_Authorization’]来捕获它 解决方法
每当你需要查看标题,甚至是你认为应该可用的任何其他信息时,我建议你像这样调试它: var_dump($_SERVER); 最有可能你会发现它:$_SERVER [‘HTTP_AUTHORIZATION’] 注意:这是区分大小写的! Php获取标题,将键大写,将“ – ”更改为“_”并添加“HTTP_”. 注意2:不要使用标准的http标头,例如自定义令牌的授权.这是针对HTTP Basic Authentication.如果您实现了自定义令牌,那么请使用您的自定义http标头. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |