2008-11-12 20 views
9

Estoy tratando de procesar una transacción de tarjeta de crédito en .net y funciona perfectamente en Safari, Opera e IE. Cuando intento la misma transacción en Firefox, envía dos solicitudes y termino con una tarjeta con doble carga. A partir de una búsqueda rápida en Google, parece que este es un problema con Firebug, pero no puedo encontrar una manera de detener esta doble publicación.Solicitud de envío de Firefox dos veces

¿Alguien tiene alguna idea sobre cómo evitar que Firefox (y Firebug) hagan esto?

+0

¿Qué tipo de autenticación usa el sitio? –

Respuesta

8

Utilice una nonce, una clave única que solo se usa una vez.

Envíe un número único junto con los campos del formulario al navegador (esto a menudo se realiza con un campo de entrada oculto), y almacene una copia en el servidor con la transacción. Dentro del formulario, cambie el número en enviar. Valide que las claves coincidan al procesar sus solicitudes.

También puede haber una explicación clara de lo que está sucediendo en el front-end, y ese problema podría eliminarse del lado del cliente. Lo mejor es resolver el problema de envío doble en el servidor, simplemente porque hay muchas maneras en las que puede producirse un envío doble.

+0

Esto suena como que puede hacer el truco. Lo intentaré mañana y te dejaré saber cómo va. ¡Gracias! –

+0

@Chris Philpotts: ¿Tuviste un poco de suerte con esta solución? Estamos experimentando el mismo problema en nuestra aplicación que procesa pagos con tarjeta de crédito. –

0

Tuve el mismo problema, aunque no me di cuenta de que era específico de FireBug. Realmente debería arreglar esto correctamente de todos modos, en caso de que el usuario haga clic en el botón Atrás y vuelva a enviar.

La forma habitual es tener un token único para la transacción en un campo oculto en el formulario. Cuando el servidor recibe el formulario, impide que se realice otra transacción.

2

usar Firebug 1.2.1 y ya cuenta con un programa de prevención para el puesto de errores doble, que se muestra esta advertencia cuando se quiere ver la respuesta AJAX:

Firebug tiene que ir al servidor de obtener esta información para url: http://example.url/

este segundo POST puede interferir con algunos sitios. Si desea enviar el POST de nuevo, abrir una nueva pestaña en Firefox, uso de URL 'about: config', establecer el valor booleano 'extensions.firebug.allowDoublePost' true Este valor se pone a cero cada vez que se reinicia Firefox Este problema desaparecerá cuando se envía https://bugzilla.mozilla.org/show_bug.cgi?id=430155 .

+0

Tengo lo mismo en la mía también. Sin embargo, necesito una solución que evite que esto le ocurra a personas con versiones anteriores del navegador. –

+0

Atascado con el mismo problema y esto es debido a Firebug. Desactiva Firebug y trabaja bien. Pero necesita Firebug para depurar el código. No veo esta clave 'extensions.firebug.allowDoublePost' en about: config. – vsingh

+0

Tampoco pude encontrar 'extensions.firebug.allowDoublePost' en about: config. Estoy usando FireFox 5.0 con Firebug 1.7.3 –

1

También me sucedió esto una vez en Firefox, puede suceder en algunas circunstancias cuando "Ver código fuente". La doble publicación de Firebug suena como un problema similar.

Al final, sin embargo, es bueno que capte esto ahora - sería malo si cargar dos veces una tarjeta de crédito podría ser tan simple como presionar el botón Atrás después de realizar un pedido. (Y como desarrollador de una empresa de comercio electrónico, puedo decirle que esto sucede todo el tiempo. Si su proceso de pago tiene cuatro pasos/páginas, imagine los estragos que puede causar abriendo el paso 3 en una nueva ventana del navegador, volviendo al paso anterior en la primera ventana, luego completando el pedido en la segunda ventana del navegador ... confía en mí, he aprendido de la peor manera. Te sorprenderá lo que hace la gente para moverse por ese Hawai cálculo de recargo de envío en el paso 3.)

El nonce es una solución; otra es simplemente hacer un control de cordura en la página que procesa la tarjeta de crédito. Mire en su base de datos y diga "espere un minuto ... ¡esta orden ya está cargada!" Entonces vomita con un elegante mensaje de error. ¡Espero que esto ayude!

4

Puede que no sea firebug.

Tuve un problema similar el año pasado (aunque, en mi caso, se trataba de una secuencia de solicitudes GET interminables cada vez que veía un archivo multimedia independiente: GIF, JPG, WMV, etc.).

Inhabilité todas mis extensiones y luego intenté reactivarlas una a la vez, verificando cada extensión para ver si estaba causando el problema. Resultó ser la extensión de Skype, en mi caso.

Así que no confié solo en el conocimiento de segunda mano de que es Firebug. Si realmente entiendes el problema, puedes descubrir que es algo completamente diferente.

+1

Estoy de acuerdo con esta afirmación. Tengo FireBug 1.7.3 instalado mi navegador FireFox 5.0, lo he deshabilitado y seguía viendo solicitudes duplicadas. Podría ser solo un problema de Firefox ... –

0

Gracias por las excelentes respuestas aquí. En mi caso, resultó ser FireBug (versión 1.05) con FireFox 2.0.0.20. Una vez que apagué el complemento FireBug, las publicaciones dobles se detuvieron.

1

Incluso si el nonce no es su solución para este problema, ¡necesita tener un nonce de todos modos! Es muy importante para cualquier tipo de sitio donde una persona quiera engañar a otra para que haga algo (como en cualquier parte del mundo). Se llama falsificación de solicitudes entre sitios, y generalmente está bloqueada por un nonce. Consulte http://en.wikipedia.org/wiki/CSRF si necesita más información.

Cuestiones relacionadas