gpt4 book ai didi

rest - slimframework request->headers 不读取授权

转载 作者:行者123 更新时间:2023-12-04 00:35:04 26 4
gpt4 key购买 nike

我正在尝试使用服务器端的 slim 和客户端的 angularJS 来实现一个简单的授权。为了测试 REST API,我使用了一个名为 Rested for Mac 的程序,它允许发送 rest 调用。

我想交付,一旦授权完成,在每次休息时调用一个 jwt token ,然后可以在 slim 中使用它来授权对某些路径的请求。

现在我通过 Rested 提供以下标题和正文:

Accept: */* 
Accept-Encoding: gzip, deflate
Content-Type: application/json
Authorization: jwt-test
Accept-Language: de-de

{
"login": "TestLogin",
"password": "TestPassword",
"uuid": "dsfglj45690dfgkl456"
}

而不仅仅是打印出整个标题:
Slim\Http\Headers Object ( [data:protected] => Array ( [Host] => localhost:8888 
[Content-Type] => application/json [Content-Length] => 89 [Connection]
=> keep-alive [Accept] => */* [User-Agent] => Rested/2009 CFNetwork/673.4
Darwin/13.4.0 (x86_64) (iMac13%2C2) [Accept-Language] => de-de [Accept-Encoding]
=> gzip, deflate ) )

如您所见,此数组中没有 Authorization。

我也直接用 Firefox 进行了检查,结果相同。 O 可以在带有 firebug 的请求 header 中看到授权字符串,但它不在 slimframework 的转储数组中。

有没有人知道我的问题出在哪里?

提前致谢并致以亲切的问候

索利克

最佳答案

问题

基本身份验证 header 应如下所示。

Authorization: Basic cm9vdDp0MDBy

Basic 后面的字符串是通过将用户名和密码组合成一个类似 username:password 的字符串来构造的。 .然后使用 base64 对结果字符串进行编码。

您正在将 header 发送到 PHP 不会解析的网络服务器。不确定这是否被视为错误或功能。
Authorization: jwt-test 

解决方案

如果您将以下内容添加到 .htaccess 文件中,则使用当前版本的 Slim。
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

然后,您甚至可以使用其中任何一个访问非标准 header 。

var_dump($_SERVER["HTTP_AUTHORIZATION"]);
var_dump(apache_request_headers()["Authorization"]);
var_dump($app->request->headers("Authorization"));

它给出了以下结果:
string 'jwt-test' (length=8)
string 'jwt-test' (length=8)
string 'jwt-test' (length=8)

您还可以使用其他一些标题名称,例如 X-Authorization .

关于rest - slimframework request->headers 不读取授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26256730/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com