Rumah  >  Soal Jawab  >  teks badan

Laravel: Kunci keizinan tiada daripada tatasusunan pengepala Shopify

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粉448346289P粉448346289306 hari yang lalu400

membalas semua(1)saya akan balas

  • P粉937382230

    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.

    balas
    0
  • Batalbalas