2 回答

TA貢獻1841條經驗 獲得超3個贊
搜索谷歌,在這里我發現你必須在 $_SERVER['HTTP_AUTHORIZATION'] 中接收 JWT 但這至少在我的共享主機中不起作用,我嘗試玩 .htaccess 文件但沒有,你可以查看詳細信息這里 [ Apache 2.4 + PHP-FPM 和授權標頭你也可以通過 JSON 格式的角度將 JWT 發送到你的 php 文件,但如果你想通過 GET 或 POST 發送數據,我建議你使用 HttpClientModule 而不是 HttpRequest,
在 PHP 中,這是我的測試文件,我在 URL 中發送了 JWT,這不是執行令牌的最佳形式,但在我的情況下有效,我希望它有所幫助。
<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: GET, POST");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
require_once 'jwt/src/BeforeValidException.php';
require_once 'jwt/src/ExpiredException.php';
require_once 'jwt/src/SignatureInvalidException.php';
require_once 'jwt/src/JWT.php';
use \Firebase\JWT\JWT;
$llave = 'TULLAVESECRETA';
$authHeader = $_GET['tok'];
try{
$decoded = JWT::decode($authHeader, $llave, array('HS256'));
echo json_encode($decoded);
}
catch(Exception $e){
http_response_code(200);
echo json_encode(array(
"mensaje" => "Vuelve a iniciar sesion.",
"error" => $e->getMessage()
));
}
?>

TA貢獻1794條經驗 獲得超8個贊
在位于 api 文件夾的 .htaccess 文件中包含以下行:
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
完整答案在這里:PHP POST 請求中缺少授權標頭
然后你可以用$_SERVER['HTTP_AUTHORIZATION']or讀取你的“Bearer”+token
$requestHeaders = apache_request_headers();
$token = $requestHeaders["Authorization"];
您仍然需要從$token.
if (preg_match('/Bearer\s(\S+)/', $_SERVER['HTTP_AUTHORIZATION'], $matches)) {
// alternately '/Bearer\s((.*)\.(.*)\.(.*))/' to separate each JWT string
$stripped_token = $matches[1];
}
- 2 回答
- 0 關注
- 157 瀏覽
添加回答
舉報