Firefox отправляет запрос дважды

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

Кто-нибудь знает, как предотвратить это в Firefox (и Firebug)?

Какую форму аутентификации использует сайт?

Aran Mulholland 23.11.2012 04:29
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
9
1
11 234
7

Ответы 7

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

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

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

Похоже, это может помочь. Я попробую завтра и расскажу, как пойдет. Спасибо!

Chris Philpotts 12.11.2008 07:29

@Chris Philpotts - Вам повезло с этим решением? У нас возникла та же проблема в нашем приложении, которое обрабатывает платежи по кредитным картам.

Michael Kniskern 06.07.2011 19:52

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

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

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

Firebug needs to POST to the server to get this information for url: http://example.url/

This second POST can interfere with some sites. If you want to send the POST again, open a new tab in Firefox, use URL 'about:config', set boolean value 'extensions.firebug.allowDoublePost' to true This value is reset every time you restart Firefox This problem will disappear when https://bugzilla.mozilla.org/show_bug.cgi?id=430155 is shipped.

У меня то же самое. Мне нужно решение, которое предотвратит это от людей со старыми версиями браузера.

Chris Philpotts 12.11.2008 07:30

Застрял с той же проблемой, и это из-за firebug. Отключите firebug и работайте хорошо. Но для отладки кода нужен firebug. Я не вижу этого ключа extension.firebug.allowDoublePost в about: config.

vsingh 20.01.2011 20:31

Я также не смог найти extensions.firebug.allowDoublePost в файле about: config. Я использую FireFox 5.0 с Firebug 1.7.3

Michael Kniskern 06.07.2011 21:42

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

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

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

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

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

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

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

Я согласен с этим утверждением. У меня FireBug 1.7.3 установил мой браузер FireFox 5.0, отключил его и все еще видел отправляемые дублирующиеся запросы. Это может быть проблема с firefox ...

Michael Kniskern 06.07.2011 19:55

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

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

Другие вопросы по теме