Laravel: Autorisierungsschlüssel fehlt im Shopify-Header-Array
P粉448346289
P粉448346289 2024-01-10 16:31:03
0
1
445

Ich bin neu in der Shopify-App-Entwicklung. Ich habe eine App mit PHP-Vorlagen von shopify entwickelt. Es verwendet Laravel und React. Dies ist https://github.com/Shopify/shopify-app-template-php/tree/cli_third

Wenn ich npm run dev ausführe, wird die App im Dev Store ausgeführt.

Ich habe dann meine Anwendung auf einem AWS-Server mithilfe einer Domäne bereitgestellt (z. B. sub.mydomain.com).

Dann habe ich die App im Store installiert.

Die Seite wird in der App gerendert. Bei jeder GET- oder POST-Anfrage erhalte ich jedoch die Fehlermeldung 500.

Nach dem Debuggen habe ich diese Codezeile gefunden $session = Utils::loadCurrentSession($request->header(), $request->cookie(), $isOnline); Es wird eine Ausnahme ausgelöst, der Fehler ist:

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"

Aber in der Kopfzeile der Anfrage steht ein Autorisierungscode:

: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

Ich glaube, das liegt an der Anfrage, die vom Iframe gesendet wird. Kann mir jemand sagen, was ich tun muss, um dieser Anfrage stattzugeben?

P粉448346289
P粉448346289

Antworte allen(1)
P粉937382230

我找到了解决方案! 实际上,我使用的 Laravel 模板 没有public 文件夹内的 .htaccess 文件。我必须手动添加它。

在添加 .htaccess 文件时,它只有以下代码:

RewriteEngine on

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

并且授权代码未到达 Lararvel 应用程序。

我必须在 .htaccess 文件中添加此代码:

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

.htaccess 文件中的最终代码是:

RewriteEngine on

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

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

然后,所有请求开始工作。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage