Laravel : Clé d'autorisation manquante dans le tableau d'en-tête Shopify
P粉448346289
P粉448346289 2024-01-10 16:31:03
0
1
430

Je suis nouveau dans le développement d'applications Shopify. J'ai développé une application en utilisant des modèles php fournis par shopify. Il utilise Laravel et React. Il s'agit de https://github.com/Shopify/shopify-app-template-php/tree/cli_third

Lorsque j'exécute npm run dev, l'application s'exécute dans le magasin de développement.

J'ai ensuite déployé mon application sur un serveur AWS en utilisant un domaine (ex : sub.mydomain.com).

Ensuite, j'ai installé l'application dans le magasin.

La page est en cours de rendu dans l'application. Mais j'obtiens une erreur 500 lors d'une requête GET ou POST.

Après le débogage, j'ai trouvé cette ligne de code $session = Utils::loadCurrentSession($request->header(), $request->cookie(), $isOnline); Une exception est levée, l'erreur est : 

ShopifyExceptionMissingArgumentException {#334
#message: "Missing Authorization key in headers array"
#code: 0
#file: "/var/www/html/shopify-project/web/vendor/shopify/shopify-api/src/Auth/OAuth.php"

Mais dans l'entête de la demande, il y a un code d'autorisation :

:authority: sub.mydomain.com
:method: GET
:path: /api/view-id
:scheme: https
accept: */*
accept-encoding: gzip, deflate, br
accept-language: en-US,en;q=0.9,ne;q=0.8
authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczpcL1wvcW9kZWFuYWx5dGljcy5teXNob3BpZnkuY29tXC9hZG1pbiIsImRlc3QiOiJodHRwczpcL1wvcW9kZWFuYWx5dGljcy5teXNob3BpZnkuY29tIiwiYXVkIjoiNDBhYWM4OWM0Yzc4YmJlMjE5ZDBmMWY3NWExZjJhZTciLCJzdWIiOiI4NDM4NjcwOTc2MSIsImV4cCI6MTY1NzgxOTUyOSwibmJmIjoxNjU3ODE5NDY5LCJpYXQiOjE2NTc4MTk0NjksImp0aSI6ImRhZTI1ZjViLWIxODgtNGZkOS05MjcwLWNkOWNlODQ3MDIyZCIsInNpZCI6IjJmNTJkOTcxNTgxMDc5YmYxYmI0NDNlZWY5MGM2YTI2OGEyMmRkY2ZlZmRhMDc2YzE4NTM5OGY3YzU4ZDJmYTgifQ.ASJOsmBb4kMZz-QiRzg60pzvwDaj4w5DbZRO8mcWt1U
cache-control: no-cache
pragma: no-cache
referer: https://sub.mydomain.co/setup? hmac=633d1f9577273c7e7281dba9ca206037100dckjlkjb45ac7271674691acc6f7e6b3da&host=cW9kZWFuYWx5dGljcy5teXNob3BpZ54654nkuY29tL2FkbWlu&locale=en&session=78bbfd9e29b55c907762eba75a4a759f0691572c1f4661500f0d6d4ff6a54d86&shop=mystore.myshopify.com&timestamp=1657819465
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="99", "Google Chrome";v="99"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"
sec-fetch-dest: empty
sec-fetch-mode: cors
sec-fetch-site: same-origin
user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36
x-requested-with: XMLHttpRequest

Je pense que cela est dû à la demande envoyée par l'iframe. Quelqu'un peut-il me dire ce que je dois faire pour autoriser cette demande ?

P粉448346289
P粉448346289

répondre à tous(1)
P粉937382230

J'ai trouvé la solution ! En fait, le Modèle Laravel que j'utilise n'a pas de fichier .htaccess dans le dossier public. Je dois l'ajouter manuellement.

Lors de l'ajout du fichier .htaccess, il ne contient que le code suivant :

RewriteEngine on

RewriteCond  !^(index.php|resources|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/ [L,QSA]

Et le code d'autorisation n'atteint pas l'application Lararvel.

J'ai dû ajouter ce code dans le fichier .htaccess :

RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
Le code final dans le fichier

.htaccess est :

RewriteEngine on

RewriteCond  !^(index.php|resources|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/ [L,QSA]

RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

Ensuite, toutes les demandes commencent à fonctionner.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal