recherche

Maison  >  Questions et réponses  >  le corps du texte

Laravel : Clé d'autorisation manquante dans le tableau d'en-tête Shopify

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粉448346289P粉448346289327 Il y a quelques jours426

répondre à tous(1)je répondrai

  • P粉937382230

    P粉9373822302024-01-11 13:48:22

    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.

    répondre
    0
  • Annulerrépondre