Jump to content

Error [object XMLHttpRequest] solo con https


NeRViTH

Recommended Posts

Tengo prestashop 1.2.5.0
Instalacion de 0
Cuando intento agregar algo al carrito con ajax activado y entrando a la web por https, obtengo el siguiente error:

TECHNICAL ERROR: unable to add the product
Details:
Error thrown: [object XMLHttpRequest]
Text status: error 



Sin https no falla, no hay solucion que no sea desactivar ajax?

Link to comment
Share on other sites

  • 1 month later...

Hola!!

Creo que he encontrado una posible solución...no se si es tarde pero te cuento:

En el modulo blockcart , tienes el ajax-cart.js, justo en las primera lineas escribe esto:

//JS Object : update the cart by ajax actions

var enlace =baseDir.split(' : ');

var protocolo_seguro=enlace [0]+'s:'; //le añadimos la s y los :

baseDir=protocolo_seguro+enlace[ 1 ] ;

var ajaxCart = {

Con esto podrás añadir productos mediante SSL, pero ten en cuenta que no lo podrás hacer mediante http:, voy a ver si puedo averiguar como meter un :

if(protocolo seguro){
enlace="https:";
}else{
enlace="http:";
}

Link to comment
Share on other sites

Al final el código para que permita añadir con ambos protocolos es el siguiente, al principio de ajax-cart.js:

//JS Object : update the cart by ajax actions


var protocol=document.URL.toString();
protocolo=(protocol.split(':'));

if(protocolo[ 0 ]=='https'){

var enlace =baseDir.split(':');

var protocolo_seguro=enlace[ 0 ]+'s:';

baseDir=protocolo_seguro+enlace[ 1 ];
}

var ajaxCart = {
........


Para quien le sirva ;)

Link to comment
Share on other sites

Hola, me gustaría aportar algunas consideraciones al respecto sobre el uso de https y prestashop. Si nos hemos decidido a contratar un certificado SSL para integrarlo en nuestra instalación de prestashop hay que tener claro el uso del mismo por parte de prestashop, dando por hecho que lo tenemos bien "instalado" debemos activar en Back Office >> Preferencias >> Si su hosting permite SSL, puede activar la encriptación del SSL (https://) para la identificación de la cuenta del usuario y el proceso de pedido significa que prestashop puede ser usado en los 2 estádos - al entrar un usuario en la web por medio de http://www.comercioprototipo.com la tienda responde normalmente y no vas a tener conflictos ni alertas evidentemente, se realizan las compras añadiendo al carro xxx productos y ahora al pasar por caja es cuando prestashop te cambia la url por https://comercioprototipo.com/order.php y todo el proceso comienza a estar securizado..una vez finalizada la compra la siguiente url nos saca de la zona securiza a la normal.. así funciona...
De esto se saca la siguiente conclusión ( evitaréis alertas y avisos de los navegadores sobre el uso de imágenes fuera de zona SSL ) claro está que todos los módulos de terceros deberán estar desabilitados para las zonas SSL... creo que está claro .. un saludo TECNILOCO.

Link to comment
Share on other sites

Me apuntan, que prestashop funciona de manera que solo se habilitará el protocolo HTTPS en los apartados que prestashop considere oportuno, es decir a la hora de pasar por caja.

Eso es verdad, pero en mi caso y quizás en el de otros , he tenido que crear un modulo especial con una conexión a BBDD en el que preciso de dicho protocolo, tras esa conexión puede aparecer un producto. En resumen un formulario en el que necesito https y tras esto la aparición de un producto que puede ser añadido al carrito. Cuando aparecía el producto continuaba con https, así que he tenido que añadir ese JS, por webs, ya que no quería duplicar codigo y podía solucionar con 6 líneas de JS.

De todos modos se agradece la aclaración !

Un saludo

Link to comment
Share on other sites

Modificación:


En lugar de poner el código antes de ajax-cart, mejor dentro de la función jquery que modifica los enlaces para los botones:

//override every button in the page in relation to the cart
overrideButtonsInThePage : function(){
var idProduct = $(this).attr('rel').replace('ajax_id_product_', '');

AQUI


Más que nada por que Firebug me mostraba algún error en jquery... y el código que hay dentro de esa función se ejecuta siempre que pulsamos sobre un botón para añadir a nuestro carito, que a su vez llama a la función ajaxCart.add(), que es la función que requiere la variable baseDir.


Un saludo

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...