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×tamp=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?
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:
Dan kod kebenaran tidak sampai ke aplikasi Lararvel.
Saya terpaksa menambah kod ini dalam fail .htaccess:
Kod akhir dalam fail.htaccess ialah:
Kemudian semua permintaan mula berfungsi.