2008-11-12 2 views
9

Я пытаюсь обработать транзакцию с кредитной картой в .net, и она отлично работает в Safari, Opera и IE. Когда я пытаюсь выполнить ту же транзакцию в Firefox, она отправляет два запроса, и я получаю двойную плату. Из быстрого поиска в Google кажется, что это проблема с Firebug, но я не могу найти способ остановить эту двойную запись.Запрос на отправку Firefox дважды

Есть ли у кого-нибудь идеи о том, как предотвратить использование Firefox (и Firebug)?

+0

Какую форму аутентификации использует сайт? – 2012-11-23 00:29:51

ответ

8

Используйте специальный ключ nonce, который используется только один раз.

Отправьте уникальный номер вместе с полями формы в браузер (это часто делается со скрытым полем ввода) и сохраняйте копию на сервере с транзакцией. В форме измените номер на отправке. Подтвердите соответствие ключей при обработке ваших запросов.

Также может быть ясное объяснение того, что происходит на лицевой стороне, и эта проблема может быть устранена на стороне клиента. Лучше всего решить проблему с двойным отправкой на сервере, просто потому, что существует так много способов, в которых может возникнуть двойная подача.

+0

Похоже, это может сделать трюк. Я попробую завтра и дам вам знать, как это происходит. Благодаря! – 2008-11-12 04:29:45

+0

@ Chris Philpotts - Вам повезло с этим решением? Мы сталкиваемся с той же проблемой в нашем приложении, которая обрабатывает платежи по кредитным картам. – 2011-07-06 15:52:01

0

У меня была такая же проблема - не понимал, что это было специфично для FireBug. Вы действительно должны исправить это правильно в любом случае, если пользователь нажмет кнопку «Назад» и повторит отправку.

Обычный способ состоит в том, чтобы иметь уникальный токен для транзакции в скрытом поле в форме. Когда серверная сторона получает форму, она предотвращает создание другой транзакции.

2

Я использую Firebug 1.2.1 и имеет уже предупреждение за двойной пост жука, он показывает вам это предупреждение, если вы хотите, чтобы увидеть ответ AJAX:

Firebug должна POST на сервер в получить эту информацию для URL: http://example.url/

Это второй POST может помешать некоторых сайтов. Если вы хотите отправить POST снова откройте новую вкладку в Firefox, использовать URL «о: конфигурациях», установите булево значение «extensions.firebug.allowDoublePost» истину Этого значения сбрасывается каждый раз, когда перезапуск Firefox Эта проблема будет исчезнет, ​​когда https://bugzilla.mozilla.org/show_bug.cgi?id=430155 отправлен.

+0

У меня тоже то же самое в моем. Мне нужно решение, которое предотвратит это, если это случится с людьми со старыми версиями браузера. – 2008-11-12 04:30:44

1

У меня также было это случилось со мной однажды в Firefox - это может произойти при некоторых обстоятельствах, когда вы «View Source». Похожая проблема с Firebug выглядит как аналогичная проблема.

В конце концов, однако, хорошо, что вы поймали это сейчас - было бы плохо, если бы двойная зарядка кредитной карты могла быть такой же простой, как нажать кнопку «Назад» после размещения заказа. (И как разработчик для компании электронной коммерции, я могу сказать вам, что это происходит все время. Если ваш процесс оформления заказа состоит из четырех шагов/страниц, представьте себе хаос, который вы можете сделать, открыв шаг 3 в новом окно браузера, нажав на предыдущий шаг в первом окне, а затем выполнив заказ во втором окне браузера ... поверьте мне, я усвоил трудный путь. Вы будете поражены тем, что люди делают, чтобы обойти этот Гавайи расчет надбавки за доставку на шаге 3.)

Nonce - это одно решение; другой - просто выполнить проверку работоспособности на странице, обрабатывающей кредитную карту. Посмотрите в свою базу данных и скажите «подождите минуту ... этот заказ уже заряжен!» Затем рвать с грациозным сообщением об ошибке. Надеюсь это поможет!

4

Возможно, это не firebug.

У меня была аналогичная проблема в прошлом году (хотя в моем случае это была последовательность бесконечных запросов GET при просмотре автономного медиафайла: GIF, JPG, WMV и т. Д.).

Я отключил все свои расширения, а затем попытался повторно включить их по одному, проверив каждое расширение, чтобы узнать, вызвало ли оно проблему. В моем случае это было расширение Skype.

Так что не просто полагайтесь на подержанные знания, что это firebug. Если вы действительно натолкнулись на проблему, вы можете обнаружить, что это что-то еще.

0

Спасибо за отличные отзывы здесь. В моем случае это FireBug (версия 1.05) с FireFox 2.0.0.20. Как только я отключил надстройку FireBug, двойные сообщения остановились.

1

Даже если nonce isnt ваше решение для этой проблемы, вам обязательно нужно иметь nonce! Это очень важно для любого сайта, где один человек захочет обмануть другого в том, чтобы что-то делать (например, в любом месте). Его называют подделкой запроса на межсайтовый запрос, и он обычно блокируется с помощью nonce. См. http://en.wikipedia.org/wiki/CSRF, если вам нужна дополнительная информация.