J'utilise POSTMAN pour envoyer une demande GET dans l'API avec un en-tête contenant une autorisation.
Je sais que l'en-tête de données fonctionne parce que s'il ne le fait pas, la route renvoie une erreur 401.
Je voulais obtenir l'en-tête Authorization comme ceci:
$access_token = Request::header('Authorization');
Mais remarqué que cela retourne NULL.
J'ai donc essayé d'attraper les valeurs avec:
die(var_dump(Request::header()));
Et remarqué qu'il ne contient aucun en-tête d'autorisation. Il suffit d'héberger des en-têtes de cookie.
mettre à jour
Devrait obtenir Authorization: Bearer ACCESS TOKEN
Quelle version de POSTMAN avez-vous utilisée?
Si vous êtes sur votre ordinateur local ou sur un serveur géré, certaines sociétés d’hébergement n’autorisent pas l’AUTORISATION EN-TÊTE.
.htaccess modification
RewriteEngine On
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
La réponse de dschniepp est juste, mais j'ai aussi des problèmes avec cela. Vous devez faire deux choses:
Dans le premier point, vous devez vérifier si le module "mod_rewrite" est disponible via la fonction php_info, dans un fichier php séparé. Ensuite, s'il est disponible, vous devez l'activer, cela dépend de la configuration de votre serveur Web. Dans ma boîte Nitrous, j'ai ajouté ces lignes à mon fichier httpd.conf:
<IfModule mod_rewrite>
RewriteEngine On
</IfModule>
Ou vous pouvez aussi activer le module dans le fichier .htaccess:
RewriteEngine On
Ensuite, dans le même fichier .htaccess situé dans un dossier public à la racine de l'application laravel, vous devez ajouter les lignes suivantes:
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
Ces lignes ont fonctionné pour moi. Votre fichier .htaccess devrait ressembler à ceci:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Et voilà, vous devriez avoir l'en-tête Authorization dans le tableau Request :: header (). Juste pour clarifier ceci est un problème avec Apache, pas avec Laravel lui-même.
Dans Laravel 5.5, vous pouvez lire les éleveurs en utilisant Apache_request_headers, il vous suffit de le lire dans votre contrôleur à l'aide des lignes suivantes
$headers = Apache_request_headers();
dd($headers['Authorization']);
Assurez-vous que vous avez ajouté utilisez Illuminate\Http\Request; dans votre contrôleur
Afficher ceci ici car cela a résolu mon problème. Ceci s'applique aux sous-domaines mais peut évidemment être ajusté aux domaines simples. Appliqué cela dans mon fichier de routes en haut.
$newUrl = '';
try{
$urlParts = parse_url($_SERVER['HTTP_REFERER']) ?? '';
$newUrl = $urlParts['scheme'] . "://" . $urlParts['Host'];
if(!stristr($newUrl, '.yourdomain.com')){
$newUrl = 'false';
}
}catch(Exception $e)
{}
header('Access-Control-Allow-Origin: ' . $newUrl);
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Headers: access-control-allow-Origin,cache-control,content-type,postman-token');