Rumah > Soal Jawab > teks badan
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?
P粉9373822302024-01-11 13:48:22
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.