X-Frame-Options запрещает перенаправление на PayPal

У меня есть платежная система, которая не перенаправляет на PayPal из-за ошибки: «Отказано в отображении документа, потому что отображение запрещено X-Frame-Options». Форма публикуется и создается правильный URL-адрес перенаправления, но ответ на запросы PayPal не возвращается:

Это правильно перенаправляет на следующий запрос: https://www.sandbox.paypal.com/webscr&cmd=_express-checkout&token=xxx

Это не показывает ответа: https://www.sandbox.paypal.com/us/cgi-bin/webscr?cmd=_flow&SESSION=xxx&dispatch=xxx

Если я вырезаю и вставляю первый запрос в браузер, он перенаправляется на PayPal, однако при запуске из приложения (в Chrome) я получаю ошибку X-Frame-Options. (или в Firefox ничего)


person The Hawk    schedule 01.09.2011    source источник


Ответы (6)


Это означает, что Paypal не позволяет вам использовать Paypal в iframe. Вы не должны использовать Payapl в iframe.

person Arnaud Le Blanc    schedule 01.09.2011
comment
но раньше работало, а теперь вдруг не работает - person The Hawk; 01.09.2011
comment
Возможно, Paypal просто добавил этот заголовок X-Frame-Options - person Arnaud Le Blanc; 01.09.2011
comment
поэтому я должен иметь возможность переключиться на более старую версию PayPal, и она должна работать? Я тоже это уже пробовал... или они добавили это во все версии в целях безопасности? - person The Hawk; 01.09.2011
comment
Да, это явно мера безопасности, это защита от кликджекинга и тому подобного. - person Arnaud Le Blanc; 01.09.2011
comment
но это сломает любой сайт с уже установленными фреймами ... это должно быть зависит от версии - person The Hawk; 01.09.2011
comment
на самом деле, если вы поместите target=_top в тег формы в iframe, он будет работать - person The Hawk; 01.09.2011
comment
Если тот же iframe для экспресс-оформления Paypal открывается из Германии, он открывается, но если мы пытаемся открыть из Индии, он ограничен заголовком X-Frame-Option: Origin. Кажется, Paypal также разрешает / ограничивает в зависимости от страны. - person Kulin Choksi; 15.07.2016

У меня возникает та же проблема с песочницей, и я обнаружил, что она исправлена ​​после удаления всех файлов cookie *.paypal.com.

person the-last    schedule 07.06.2016

Просто добавьте: target="_blank" в форму

person Alexander Kalenyuk    schedule 22.05.2013
comment
Работает для меня, легко, но эффективно - person lucaferrario; 15.09.2015

В моем случае имя среды [sandbox/production] не соответствовало clientId.

person Vil    schedule 10.03.2017

Если вы хотите запустить Express Checkout в iFrame, см. раздел Цифровые товары для Express Checkout: https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_IntroductionExpressCheckoutDG

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

person SgtPooki    schedule 01.09.2011

В настоящее время я работаю с PayPal. Сначала вы могли бы подумать: «Эй! Куча док!! Ура!», но на самом деле это ОТСТОЙ. Тонны документов, которые предполагают, что вы уже знаете, что ищете. Попробуйте следующий код JS (вы уже должны были вызвать метод setExpressCheckout и иметь токен):

$(document).ready(function() {
    //asynchronously fetch paypal's javascript
    jQuery.getScript('https://www.paypalobjects.com/js/external/dg.js', function(){console.debug("javascript loaded");});
});

//the handler that opens the iframe should be the following. This code assumes token variable has already been initalized
var dg = new PAYPAL.apps.DGFlow({trigger:null, expType:"light"});
dg.startFlow('https://www.sandbox.paypal.com/incontext?token=' +token);

Единственное, что мне нужно здесь, это правильный URL-адрес для тестирования (среда песочницы).

Кстати, перед тестированием убедитесь, что вы вошли в свою учетную запись песочницы ;)

person Alex Martín Jiménez    schedule 05.10.2011