Hébergements Web - Requêtes API prestashop (module hdbrestfulapi) reçues en doubles sur le serveur mais un
BMPCreated with Sketch.BMPZIPCreated with Sketch.ZIPXLSCreated with Sketch.XLSTXTCreated with Sketch.TXTPPTCreated with Sketch.PPTPNGCreated with Sketch.PNGPDFCreated with Sketch.PDFJPGCreated with Sketch.JPGGIFCreated with Sketch.GIFDOCCreated with Sketch.DOC Error Created with Sketch.
Frage

Requêtes API prestashop (module hdbrestfulapi) reçues en doubles sur le serveur mais un

Von
JosephineC
Erstellungsdatum 2018-05-22 07:32:42 (edited on 2024-09-04 13:31:39) in Hébergements Web

Bonjour,

J'ai installer un prestashop 1.6 manuellement sur un sous domaine de mon hébergement mutualisé (offre perf1).

J'utilise ce prestashop via un module qui fourni une API Json qui permet la creation de comptes utilisateurs et l'authentification. http://www.hdb-technology.com/api-prestashop

Mon problème c'est que chaque appel a une route de cette API est reçue en double et est donc traité 2 fois mais je ne reçois qu'une seule réponse.
exemple: j'envois une requête pour créer un compte utilisateur, 2 requêtes sont logger sur le serveur et on voit dans les logs quelles sont reçu à la même seconde, le compte utilisateur est créer en BDD lors du traitement de la première requête un code 200 devrait être retourné mais je ne le reçois jamais car le doublon de la requête est executé et le compte ayant été crée avec l'adresse email envoyer en paramètre le doublon renvois donc une erreur.

J'ai tester en local en installant un prestashop de la même version et en installant et en configurant le modules de la même façon et tout marche parfaitement en local la requête n'est logger qu'une seule fois et je reçois bien un code 200.

Questions :

1. Pourquoi la requête est elle reçue en double sur le serveur ?

2. Qu'est ce qui pourrait provoquer ce problème ? Et comment le résoudre

.ovhconfig:
app.engine=php
app.engine.version=7.1
http.firewall=none
environment=development
container.image=stable

SSL activé sur tout le domaine et tous les sous domaines ainsi que dans la config prestashop pour toutes les pages de la boutique

En espérant trouver une solution au plus vite

Bien cordialement


7 Antworten ( Latest reply on 2018-05-23 09:40:02 Von
JosephineC
)

Le https est bien forcé sur le site ?

URL du site ?

Qu'entendez vous par forcé ?
url du site: https://shop.myizybag.com/
url de l'api: https://shop.myizybag.com/modules/hdbrestfulapi/api.php/v1
endpoints sans token /products

Voici le .htaccess du prestashop:

# ~~start~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again
# .htaccess automaticaly generated by PrestaShop e-commerce open-source solution
# http://www.prestashop.com



SetEnv HTTP_MOD_REWRITE On


RewriteEngine on


#Domain: shop.myizybag.com
RewriteRule . - [E=REWRITEBASE:/]
RewriteRule ^api$ api/ [L]

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

# Images
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg [L]
RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]
RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]
# AlphaImageLoader for IE and fancybox
RewriteRule ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]

# Dispatcher
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L]


AddType application/vnd.ms-fontobject .eot
AddType font/ttf .ttf
AddType font/otf .otf
AddType font/woff2 .woff2
AddType application/x-font-woff .woff


Header set Access-Control-Allow-Origin "*"



#If rewrite mod isn't enabled
ErrorDocument 404 /index.php?controller=404

# ~~end~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again

RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]



Les 2 dernières ligne sont rajouter pour la configuration du module API prestashop

Personnellement puisque le site est full https, je rajouterai une ligne avec le hsts de manière à être sur que le navigateur n'envoie pas une requête en http puis une autre en https..
Il faut ajouter ceci au htaccess

# forcer les connexions en https pendant 180 jours
Header always set Strict-Transport-Security "max-age=15552001; includeSubDomains;"



Source
https://www.1certificats.com/FAQ/fr/http_STS.htmlcertificats.com/FAQ/fr/http_STS.html

Malgré l'ajout du hsts, le problème persiste :/

Le développeur de l api n'a aucune idée de cause possible ?

Le technicien du support du module ne sera la que jeudi, mais je ne pense pas que le problème soit lié au code du module vu que tout fonctionne très bien en local

En locant c'est du http ou https ?
Le problème vient peut être de là ..

En local c'est du http, mais en désactivant le https du prestashop et le ssl du serveur et en faisant une requête en http vers l'API le problème est le même...

Bonjour,

Vous avez quoi exactement dans les logs?

(Avec et sans https, sachant qu'il faut plusieurs heures pour activer/désactiver le https).

Cordialement, janus57

Bonjour,

Voici un exemple de log pour la route /carriers en https :

[2018-05-22 11:48:27] hdbrestfulapi.INFO: Matched route "GET_v1_carriers". {"route_parameters":{"_controller":"app.carrier_controller:getCarriersAction","_route":"GET_v1_carriers"},"request_uri":"https://shop.myizybag.com/modules/hdbrestfulapi/api.php/v1/carriers"} []
[2018-05-22 11:48:27] hdbrestfulapi.INFO: > GET /modules/hdbrestfulapi/api.php/v1/carriers [] []
[2018-05-22 11:48:27] hdbrestfulapi.DEBUG: POST DATA: Array ( ) [] []
[2018-05-22 11:48:27] hdbrestfulapi.DEBUG: COOKIE USER DATA: [] []
[2018-05-22 11:48:27] hdbrestfulapi.INFO: < 200 [] []
[2018-05-22 11:48:27] hdbrestfulapi.INFO: Matched route "GET_v1_carriers". {"route_parameters":{"_controller":"app.carrier_controller:getCarriersAction","_route":"GET_v1_carriers"},"request_uri":"https://shop.myizybag.com/modules/hdbrestfulapi/api.php/v1/carriers"} []
[2018-05-22 11:48:27] hdbrestfulapi.INFO: > GET /modules/hdbrestfulapi/api.php/v1/carriers [] []
[2018-05-22 11:48:27] hdbrestfulapi.DEBUG: POST DATA: Array ( ) [] []
[2018-05-22 11:48:27] hdbrestfulapi.DEBUG: COOKIE USER DATA: [] []
[2018-05-22 11:48:27] hdbrestfulapi.INFO: < 200 [] []

et un exemple de la route /products en http:

[2018-05-22 12:16:43] hdbrestfulapi.INFO: Matched route "GET_v1_products". {"route_parameters":{"_controller":"app.product_controller:getProductsAction","_route":"GET_v1_products"},"request_uri":"http://shop.myizybag.com/modules/hdbrestfulapi/api.php/v1/products"} []
[2018-05-22 12:16:43] hdbrestfulapi.INFO: > GET /modules/hdbrestfulapi/api.php/v1/products [] []
[2018-05-22 12:16:43] hdbrestfulapi.DEBUG: POST DATA: Array ( ) [] []
[2018-05-22 12:16:43] hdbrestfulapi.DEBUG: COOKIE USER DATA: [] []
[2018-05-22 12:16:43] hdbrestfulapi.INFO: < 200 [] []
[2018-05-22 12:16:43] hdbrestfulapi.INFO: Matched route "GET_v1_products". {"route_parameters":{"_controller":"app.product_controller:getProductsAction","_route":"GET_v1_products"},"request_uri":"http://shop.myizybag.com/modules/hdbrestfulapi/api.php/v1/products"} []
[2018-05-22 12:16:43] hdbrestfulapi.INFO: > GET /modules/hdbrestfulapi/api.php/v1/products [] []
[2018-05-22 12:16:43] hdbrestfulapi.DEBUG: POST DATA: Array ( ) [] []
[2018-05-22 12:16:43] hdbrestfulapi.DEBUG: COOKIE USER DATA: [] []
[2018-05-22 12:16:43] hdbrestfulapi.INFO: < 200 [] []

On voit bien que les requêtes son reçu en double au même time code
alors qu'en local :

[2018-05-11 11:39:18] hdbrestfulapi.INFO: Matched route "GET_v1_products". {"route_parameters":{"_controller":"app.product_controller:getProductsAction","_route":"GET_v1_products"},"request_uri":"http://192.168.1.33:8888/prestashop/modules/hdbrestfulapi/api.php/v1/products?page=1&perPage=10"} []
[2018-05-11 11:39:19] hdbrestfulapi.INFO: > GET /prestashop/modules/hdbrestfulapi/api.php/v1/products?perPage=10&page=1 [] []
[2018-05-11 11:39:19] hdbrestfulapi.DEBUG: POST DATA: Array ( ) [] []
[2018-05-11 11:39:19] hdbrestfulapi.DEBUG: COOKIE USER DATA: 6 [] []
[2018-05-11 11:39:24] hdbrestfulapi.INFO: < 200 [] []

Bonjour,

Vous avez strictement le même htaccess en local?

Cordialement, janus57

Oui, exactement le même

Cordialement

Je viens de réactualiser mon espace client et je n'ai plus rien dans Multisites, pourtant si j'essaye d'ajouter mon domaine ou le sous domaines que j'avais rajouté précédement il me dit qu'ils sont déjà rattaché à mon hébergement... (Je précise que sa faisait plusieurs heures que je n'avais rien toucher dans l'espace client et que tout était normale tout à l'heure)

Bonjour,

de mon côté un test théorique du .htaccess me dit qu'il effectue deux redirections.

Ce .htaccess est celui de presta / module ou vous l'avez modifié ?

Cordialement, janus57

Bonjour @janus57 ,
Oui c'est le .htaccess du prestashop et j'ai rajouter les 2 dernières lignes pour la configuration du module API comme demander dans la doc de ce module, c'est la seule modification que j'y avais apporté puis comme dit plus haut j'ai rajouter le hsts et c'est tout.

Cordialement