Laravel: Kunci keizinan tiada daripada tatasusunan pengepala Shopify
P粉448346289
P粉448346289 2024-01-10 16:31:03
0
1
433

Saya baru dalam pembangunan aplikasi Shopify. Saya membangunkan aplikasi menggunakan templat php yang disediakan oleh shopify. Ia menggunakan Laravel dan React. Ini https://github.com/Shopify/shopify-app-template-php/tree/cli_third

Apabila saya melaksanakan npm run dev, apl itu berjalan di kedai dev.

Saya kemudiannya menggunakan aplikasi saya pada pelayan AWS menggunakan domain (cth: sub.mydomain.com).

Kemudian saya memasang aplikasi di kedai.

Halaman sedang dipaparkan dalam apl. Tetapi saya mendapat ralat 500 semasa membuat sebarang permintaan GET atau POST.

Selepas menyahpepijat, saya menjumpai baris kod ini $session = Utils::loadCurrentSession($request->header(), $request->cookie(), $isOnline); Pengecualian dilemparkan, ralatnya ialah:

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"

Tetapi dalam tajuk permintaan, terdapat kod kebenaran:

: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

Saya percaya ini disebabkan oleh permintaan yang dihantar oleh iframe. Bolehkah sesiapa memberitahu saya apa yang perlu saya lakukan untuk membenarkan permintaan ini?

P粉448346289
P粉448346289

membalas semua(1)
P粉937382230

Saya jumpa penyelesaiannya! Sebenarnya, Templat Laravel yang saya gunakan tidak mempunyai fail .htaccess dalam folder awam. Saya perlu menambahnya secara manual.

Apabila menambah fail .htaccess, ia hanya mempunyai kod berikut:

RewriteEngine on

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

Dan kod kebenaran tidak sampai ke aplikasi Lararvel.

Saya terpaksa menambah kod ini dalam fail .htaccess:

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

.htaccess ialah:

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}]

Kemudian semua permintaan mula berfungsi.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan