Jump to content

Webservice 401 Unauthorized


Recommended Posts

Mes webservice fonctionnent en local avec MAMP. Je lis, crée, met à jour des produits.

Quand j'installe sur OVH mutualisé (90plan), ça ne marche pas. J'ai une erreur 401 :

 

HTTP REQUEST HEADER

 

GET //api/product_features HTTP/1.1

Authorization: Basic ********

Host: www.******.com

Accept: */*

 

 

HTTP RESPONSE HEADER

 

HTTP/1.1 401 Unauthorized

Set-Cookie: 90plan=R4114022451; path=/; expires=Sun, 09-Oct-2011 17:38:08 GMT

Date: Fri, 07 Oct 2011 05:28:32 GMT

Server: Apache/2.2.X (OVH)

X-Powered-By: PHP/5.2.17

WWW-Authenticate: Basic realm="Welcome to PrestaShop Webservice, please enter the authentication key as the login. No password required."

Vary: Accept-Encoding

Content-Length: 0

Content-Type: text/html; charset=utf-8

 

 

Ma version : PS 1.4.4.1

 

ce qui me trouble est qu'en local la ligne X-Powered-By (ci-dessous) est différente de la ligne X-Powered-By (ci-dessus) sur OVH

HTTP/1.1 200 OK

Date: Fri, 07 Oct 2011 05:37:38 GMT

Server: Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8l DAV/2 PHP/5.3.6

X-Powered-By: PrestaShop Webservice

 

Ma réécriture d'URL est bien activée (mais pas détectée par le BO dans Outils/Service web)

PHP 5 est bien activé (comme on peut le voir dans l'entête http)

J'ai désactivé et rééactivé smarty 3 (voir ce post).

J'ai vidé les caches de Firefox et Chrome.

 

Je sèche.....

 

Merci de votre aide.

Link to comment
Share on other sites

J'ai progressé (grâce à ce post sur le forum ovh) mais sans avoir encore trouvé la solution.

 

C'est un problème lié à l'hébergement OVH mutualisé. Il est dû à l'utilisation de FCGI au lieu de CGI par OVH.

Les variables d'authentification sont rendues vides avec FCGI.

Donc dispatcher.php n'a rien à se mettre sous la dent et redemande donc ad libitum.

Il faut donc faire une petite pirouette pour récupérer ces variables (nous avons besoin seulement de l'identifiant, pas du mot de passe).

 

Il faut pour cela combiner (ou autre solution ?) deux règles de réécriture :

 

1/ une qui place HTTP Authorization dans $_SERVER['REMOTE_USER']

RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]

il faut ensuite modifier dispatcher.php pour parser la variable REMOTE_USER au lieu d'aller chercher l'id dans $_SERVER['PHP_AUTH_USER'] (ou dans $_GET['ws_key'] ?)

 

2/ celle de Prestashop qui redirige l'appel www.monsite.com/api/?requete vers le sous-répertoire contenant le script d'aiguillage, cette règle est la suivante :

RewriteRule ^api/?(.*)$ /webservice/dispatcher.php?url=$1 [QSA,L]

 

Et ça (vu mon niveau en url rewriting) je ne sais pas faire, ni si c'est possible.

Une seule règle ? Deux ? Dans quel ordre ?

J'ai essayé mais sans trouver.

 

Merci de votre aide.

Link to comment
Share on other sites

  • 4 months later...
  • 2 months later...

Bonsoir, je viens de tester la règle de ré-écriture du post OVH à savoir

RewriteRule ^api/?(.*)$ /webservice/dispatcher.php?url=$1 [E=REMOTE_USER:%{HTTP:Authorization},QSA,L]

 

mais ma clé est toujours refusée.

Comment avez vous fait ??? :)

Link to comment
Share on other sites

  • 5 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...