Hallo zusammen, wenn ich testhalber die folgende rest api url aufrufe: (Link nur für registrierte Nutzer sichtbar.) und mich mit den demo shop zugangsdaten anmelde: admin@shop.de, 12345, dann sehe ich den korrekten JSON response im browser! Versuche ich das ganze mit unserem live-shop und den korrekten Admin-Zugangsdaten, bekomme ich eine 401 unauthorized Fehlermeldung. Was muss ich tun, damit ich den REST API in unserem Shop aufrufen kann? Danke!
Solange die Zugangsdaten korrekt sind, sollte das eigentlich problemlos laufen. Kann in meinen diversen Testshops kein generelles Problem feststellen. Wenn du bei uns im Kundenportal Zugangsdaten hinterlegst, können wir uns das mal angucken. So wird es schwierig.
Hast Du im Testshop die SEO-Urls deaktiv und im Liveshop aktiv? Könnte mir gut vorstellen ohne mir das genauer anzuschauen, dass im Liveshop eventuell die .htaccess das verursacht.
Guter Hinweis. Das kann natürlich an der .htaccess liegen sein. Allerdings sind im Gambio Shop und in unserem Live Shop SEO Urls aktiv.... Ich habe testhalber einen anderen Admin angelegt. Geht leider trotzdem nicht... Hat sonst niemand das Problem?
ExpiresActive On ExpiresByType text/javascript A21600 ExpiresByType text/js A21600 ExpiresByType application/javascript A21600 ExpiresByType text/html A900 ExpiresByType text/css A14400 ExpiresByType image/gif A2592000 ExpiresByType image/jpg A2592000 ExpiresByType image/jpeg A2592000 ExpiresByType image/png A2592000 <ifModule mod_headers.c> Header set X-Content-Type-Options: nosniff </ifModule> RewriteEngine on RewriteCond %{REQUEST_FILENAME} ^(.*)\.(php|css|js|gif|jpg|jpeg|png)$ [NC] RewriteRule ^(.+) - [L] RewriteCond %{REQUEST_URI} (.*)?/admin/(.*) RewriteRule ^(.+) - [L] RewriteCond %{REQUEST_URI} (.*)?/images/(.*) RewriteRule ^(.+) - [L] RewriteCond %{REQUEST_URI} (.*)?/templates/(.*) RewriteRule ^(.+) - [L] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^(.+) - [L] RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^(.+) - [L] RewriteCond %{REQUEST_FILENAME} -l RewriteRule ^(.+) - [L] ##boosted CONTENT RewriteRule (^[a-z]{2})/(.*/)?info/([A-Za-z0-9_-]+)\.html.* shop_content.php?language=$1&gm_boosted_content=$3&%{QUERY_STRING} [PT,L] RewriteRule (.*/)?info/([A-Za-z0-9_-]+)\.html.* shop_content.php?gm_boosted_content=$2&%{QUERY_STRING} [PT,L] ##boosted PRODUCTS RewriteRule (^[a-z]{2})/(.*/)?([A-Za-z0-9_-]+)\.html product_info.php?language=$1&gm_boosted_product=$3&%{QUERY_STRING} [PT,L] RewriteRule (.*/)?([A-Za-z0-9_-]+)\.html product_info.php?gm_boosted_product=$2&%{QUERY_STRING} [PT,L] ##boosted CATEGORIES RewriteRule (^[a-z]{2})/(.*/)?([A-Za-z0-9_-]+)/?.* index.php?language=$1&gm_boosted_category=$3&%{QUERY_STRING} [L] RewriteRule (.*/)?([A-Za-z0-9_-]+)/?.* index.php?gm_boosted_category=$2&%{QUERY_STRING} [L]
Das Problem konnte leider noch nicht behoben werden. Die .htaccess scheint den Fehler nicht zu verursachen.
Dein Webserver ist ein Nginx, der bei uns ist ein Apache. Der Apache ist hier der pflegeleichte Kandidat, alles was der wissen muss kann aus .htaccess Dateien steuern, während Nginx die nicht liest. Das Apache Konzept ist da flexibel, dafür sagen die Nginx Leute deren Variante von völliger Ignoranz ist performanter. Da die Anweisungen grösstenteils elementar wichtig sind, muss der Serverbetreiber auf Zack sein, denn mann kann die ganzen Dinge nur aus der eigentlichen Konfiguration des Webservers erledigen, darum rate ich jedem Laien von Nginx ab. Das ist hier aber noch nichtmal kriegsentscheidend, dein Problem ist eher: Für die API müssen die Auth Token vom Webserver an PHP durchgereicht werden, das haben die meisten Leute mit Nginx nicht im Griff. Stichwörter ist hier Basic Auth bei PHP per fast-cgi. Einrichten kann das auch hier nur der Serververwalter.
Anbei die Antwort: "bei uns wird der NGINX nicht als Webserver eingesetzt, sondern lediglich als Reverse-Proxy. Der ausführende Webserver ist ein Apache-Webserver, weswegen auch beispielsweise .htaccess-Dateien ganz normal funktionieren. Das Problem ist, dass die derzeitig von Gambio verwendete Authentifizierung nur mit "mod_php" funktioniert und auf moderneren Webservern mit "fast-cgi" zu Problemen führt. Dies hatte ich bereits vor einem Monat mit Herrn xxx von Gambio besprochen, das Problem sollte dort also bekannt sein und wird laut Aussage von Gambio in einer kommenden Version des Shops/der API angepasst. Als Workaround habe ich folgenden Code oben in Ihrer .htaccess-Datei eingefügt: SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0 Diesen hatte ich von Herrn xxx erhalten, bei einem anderen Kunden funktionierte anschließend die Authentifizierung für die API."
Ah, ich hatte nur den Nginx gesehen, dass ist das Ding dass auf Browseranfragen nach aussen reagiert. Estugo hat insofern recht, als dass die API nochmal um weitere Authentifizierungsmechanismen ergänzt werden soll, das ist aber noch etwas hin, ein vermutetes halbes Jahr. In deinem Fall ist das aber mit der Direktive egal, denn dein Problem sollte so vom Tisch sein.
Hatte das Ganze leider nicht mehr auf dem Schirm, aber die Antwort und Lösung war die Modifizierung der .htaccess-Datei. Freut mich das es läuft!