Hallo, ich habe jetzt schon mehrere GX3 Shops, bei denen der Zugriff auf die REST API nicht funktioniert. Als Fehler kommt 401 unauthorized und zwar nicht die Meldung "invalid credentials", sondern einfach nur "Unauthorized", als ob das Login im Authorization Header gar nicht bei Gambio ankommt. So sieht ein Beispiel Request aus, der auch bei meinem Testshop und diversen anderen GX3 Shops funktioniert: GET https://....de/api.php/v2/orders?page=1&per_page=50&fields=id,purchaseDate&sort=-id HTTP/1.1 Accept: application/json Authorization: Basic aW5... User-Agent: BillbeeService/1.0 Accept-Encoding: gzip, deflate Connection: Keep-Alive Und der Response: HTTP/1.1 401 Unauthorized Date: Thu, 18 Aug 2016 18:41:31 GMT Server: Apache/2.2.31 (Unix) X-Powered-By: PHP/5.6.22 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Www-Authenticate: Basic realm="Gambio GX2 APIv2 Login" Vary: Accept-Encoding Keep-Alive: timeout=3, max=100 Connection: Keep-Alive Content-Type: text/html; charset=utf-8 Content-Length: 195 {"code":401,"status":"error","message":"Unauthorized","request":{"method":"GET","url":"https:\/\/....de","path":"\/api.php\/v2\/orders","uri":{"root":"\/api.php","resource":"\/v2\/orders"}}} Im Browser dasselbe Phänomen. Woran könnte das liegen? Edit: Wie greift Gambio denn auf den Authorization Header zu? Könnte das hier eine Lösung sein? http://stackoverflow.com/questions/...-is-missing-authorization-header-in-symfony-2 Viele Grüße, Jan
Der Auth Token denn der Webserver empfängt muss dieser an PHP durchreichen. Wenn PHP als Apache Modul läuft geht das quasi ohne Eingriff. Bei PHP per CGI am Apachen oder anderen Kombinationen muss man da oft nachhelfen...
Alles klar, danke - habs herausgefunden: <IfModule mod_rewrite.c> RewriteEngine on RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L] </IfModule>
Hallo Wilken, hallo Jan, wir haben genau das gleiche Problem. Wo muss der Code, den du, Jan, da schreibst, eingefügt werden? Wäre toll, wenn du das mal eben rückmelden könntest. Vielen Dank!
Hallo, das muss in einer Datei .htaccess im Gambio Verzeichnis stehen. Ich würde die Zeile noch ein wenig modifizieren: RewriteRule ^(.*)api.php - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] So wird die Regelverarbeitung nicht wie im obigen Beispiel beendet und wirkt nur auf die API Route, was je nach Reihenfolge der Regeln zu weiteren Problemen führen kann. Wenn du eine bestehende .htaccess hast, solltest du das nicht selber machen, da man sich mit Änderungen in dieser Datei ziemlich leicht ins Knie schießen kann Viele Grüße, Jan
hallo ich habe das selbe problem jedoch hab ich im hauptverzeichnis keine datei mit .htaccess welche datei muss man editieren ? danke
Was nicht ist, kann man ja anlegen. Kopier dir idealerweise die Datei aus gm/seo_boost_an ins Hauptverzeichnis, füge die Zeile dort unter RewriteEngine on ein.
danke hab das gemacht - bekomme aber immer noch das wenn ich versuche artikel in den shop zu senden {"code":401,"status":"error","message":"Unauthorized","request":{"method":"POST","url":"http:\/\/www.pse-gmbh.at","path":"\/gambio\/api.php\/v2\/products","uri":{"root":"\/gambio\/api.php","resource":"\/v2\/products"}}} beim aufruf von http://www.pse-gmbh.at/gambio/api.php/v2 kommt eine Login anforderung dort kann ich mich aber nicht mit dem Shopadmin einloggen ?
Wenn es korrekt funktioniert, sollte genau das funktionieren. Wenn das nicht funktioniert, gibt der Webserver die Anmeldedaten nicht an PHP weiter, das ist halt ein Serverkonfigurationsmangel und "Hosterland". Der htaccess Schachzug kann das Problem in diversen Fällen lösen, aber nicht für jede mögliche Fehlkonstellation beim Hoster. Wenn damit also nichts geht: Hoster ansprechen. Die Anforderung ist: Authentifzierungsdaten für HTTP-Basic-Auth müssen an PHP durchgereicht werden. Hier zeigen die PHP Entwickler ein Beispiel: http://php.net/manual/de/features.http-auth.php
@peter_essletzbichler hast du mal in der Cache nachgeguckt? Verklemmte Cache-Rückstände prüfen Wechselt mit einem FTP-Programm im Stammverzeichnis eures Shops in den Unterordner "cache" Prüft ob sich dort eine Datei befindet die wie folgt vom Dateiname beginnt: Code: gxapi_v2_sessions..... der Code dahinter variiert bei jeder Shopinstallation und zu jedem Anlagezeitpunkt, ist aber auch irrelevant was da steht. - Prüft ob die Datei 0 Byte Datei-Größe hat. - Verschiebt die Datei auf euren Computer oder in ein anderes Verzeichnis - Sollte das Problem behoben sein, könnt ihr die Datei vom FTP-Server entfernen, eine Sicherungskopie für alle Fälle solltet ihr aber behalten, man weiß ja nie Einige Leute die mit unserer Warenwirtschaft und der Shopschnittstelle Probleme hatten konnten dank Hilfe der Gambio-Techniker herausfinden das eine 0-Byte Datei geklemmt hat und die Authorisierung nicht erlaubte. Vielleicht hast du das Problem ja auch bei dir?
Jan, auf der Billbee Seite schreibt ihr "direkt unter der Zeile "RewriteEngine on", aber nach einer eventuell gesetzten RewriteBase " einfügen, ich habe es mit beiden Varianten versucht und es klappt einfach nicht. Hier mal ein Auszug der Datei, vielleicht siehst du ja die Lösung auf Anhieb, ich bin am Verzweifeln! <IfModule mod_rewrite.c> <IfModule mod_env.c> SetEnv gambio_mod_rewrite_working 1 </IfModule> <IfModule !mod_env.c> <IfModule mod_setenvif.c> SetEnvIf ENV ^(.*)$ gambio_mod_rewrite_working=1 </IfModule> </IfModule> ##some Hosters like 1&1 need the following line to be enabled, else all the following will fail all the time RewriteBase / <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^(.*)api.php - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] </IfModule>
also sollte dass alles sein, dann fehlt am Ende ein </IfModule> ich zähle 5 x <IfModule... aber nur 4x </IfModule>
wenn ich noch eines hinzufüge kommt nun folgende Fehlermeldung: "Anfrage fehlgeschlagen: InternalServerError Internal Server Error"
Da sieht der Code bei mir schon mal so aus: Code: <IfModule mod_rewrite.c> <IfModule mod_env.c> SetEnv gambio_mod_rewrite_working 1 </IfModule> <IfModule !mod_env.c> <IfModule mod_setenvif.c> SetEnvIf ENV ^(.*)$ gambio_mod_rewrite_working=1 </IfModule> </IfModule> RewriteEngine on ##some Hosters like 1&1 need the following line to be enabled, else all the following will fail all the time RewriteBase / .... füge diese Zeile : Code: RewriteRule ^(.*)api.php - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] unter dem RewriteBase / ein so dass das so aussieht: Code: <IfModule mod_rewrite.c> <IfModule mod_env.c> SetEnv gambio_mod_rewrite_working 1 </IfModule> <IfModule !mod_env.c> <IfModule mod_setenvif.c> SetEnvIf ENV ^(.*)$ gambio_mod_rewrite_working=1 </IfModule> </IfModule> RewriteEngine on ##some Hosters like 1&1 need the following line to be enabled, else all the following will fail all the time RewriteBase / RewriteRule ^(.*)api.php - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] ....
Dann erscheint wieder folgende Fehlermeldung in Billbee "Anfrage fehlgeschlagen: InternalServerError Internal Server Error"
Hast Du denn den Rest von Billbee installiert, oder nur die eine Zeile eingefügt? Wie sieht denn die Anleitung aus?