php – 如何在rest API中传递令牌?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 如何在rest API中传递令牌?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_419_6@ 参见英文答案 > @L_126_1@                                    14个
我是第一次探索REST API的世界,我已经不得不通过使用Slim来处理它,但现在我想成为一个自制的解决方案,考虑到我不需要任何框架来制作一个简单的休息Api.
我所做的是创建一个这样的页面

@H_502_10@

@H_502_10@

<?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;
}

我的目标是实现一个访问令牌,我想在标题中传递它但我不确定(我正在寻找一种安全模式).但是,如果我从命令行运行它:@H_502_10@

@H_502_10@

curl -X GET http://localhost/v1

我得到GET,只是举例说明它应该如何工作.所有其他询问都是如此.现在真正的问题是:只有在我传递令牌时,如何调用交换机中的方法?例如,在页面顶部将执行控件将进行这样的检查:@H_502_10@

@H_502_10@

if(!isset($_SERVER['AUTH_USER'])) 
{
    exit('TOKEN not PRovide');
}

一个问题是如何通过curl传递令牌?因为如果我通过……
我可以通过卷曲阅读标题,但它会如何工作?@H_502_10@

更新:@H_502_10@

正如@Paradoxis所提到的,我试过:@H_502_10@

@H_502_10@

url http://localhost/v1 -H "Authorization: <token>"

但似乎我没有采取标题.我花时间了解为什么标题没有传递,所以在我的代码中我添加了这一行:@H_502_10@

@H_502_10@

print_r(apache_request_headers());

这就是结果:@H_502_10@

@H_502_10@

Array 
(
   [Host] => localhost
   [User-Agent] => curl/7.46.0
   [Accept] => */*
   [Authorization] => <token>
)

何在request_headers中看到我在标题中可以正确看到,但我无法通过使用$_SERVER [‘Authorization’]或$_SERVER [‘HTTP_Authorization’]来捕获它@H_502_10@

解决方法

每当你需要查看标题,甚至是你认为应该可用的任何其他信息时,我建议你像这样调试它:@H_502_10@

@H_502_10@

var_dump($_SERVER);

最有可能你会发现它:$_SERVER [‘HTTP_AUTHORIZATION’]@H_502_10@

注意:这是区分大小写的! PHP获取标题,将键大写,将“ – ”更改为“_”并添加“HTTP_”.@H_502_10@

注意2:不要使用标准的http标头,例如自定义令牌的授权.这是针对HTTP Basic Authentication.如果您实现了自定义令牌,那么请使用您的自定义http标头.@H_502_10@

脚本宝典总结

以上是脚本宝典为你收集整理的php – 如何在rest API中传递令牌?全部内容,希望文章能够帮你解决php – 如何在rest API中传递令牌?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。