Amazon Pay - запрос перекрестного происхождения заблокирован

Я видел и читал много постов о блокировке перекрестного запроса, но ни один из них не имеет для меня особого смысла.

Я интегрирую Amazon Pay в сайт Sitecore/MVC, и все шло хорошо. Однако на странице рендеринга кнопки я начал видеть ошибку. Если я открою инструменты разработчика в Chrome of Firefox, а затем загрузлю страницу, я вижу, что она красная:

ПОЛУЧИТЕ https://payments-uk-sandbox.amazon.com/merchantAc...tus?countryOfEstablishment=UK&ledgerCurrency=GBP 200 OK 66ms Widgets.js (строка 43)

С последующим:

Блокировка перекрестного запроса: та же политика происхождения запрещает чтение удаленного ресурса по адресу https://payments-uk-sandbox.amazon.com/merchantAccount/AAAJJFJJJFJJF/accountStatus?countryOfEstablishment=UK&ledgerCurrency=GBP. (Причина: отсутствует заголовок CORS "Access-Control-Allow-Origin").

Из того, что я читаю, и из того, как я это понимаю, проблема на стороне Амазонки. Это имело бы смысл, так как вчера я не получил эту ошибку, и я не изменил код на своей странице.

Может кто-нибудь сказать мне, если у меня есть это право? Что я могу сделать? У меня есть контакт по интеграции в Amazon, но мне потребовалось 6 дней, чтобы ответить на последний вопрос, который у меня возник, поэтому я не собираюсь ждать ответа в ближайшее время.

1 ответ

Вы должны вызвать это из бэкэнда и при необходимости показать в веб-интерфейсе. CORS появился из-за того, что Amazon не позволяет использовать этот метод в веб-интерфейсе другого сайта из-за проблем с безопасностью.

Что нужно сделать: вам нужно создать на своем веб-сайте метод, который создает веб-запрос для amazon и вернуть некоторую информацию, и вы должны вызвать этот метод из js

вот пример:

создать метод в контроллере

    public class HomeController : Controller
{

    public ActionResult GetAccountStatus()
    {
        var client = new WebClient();
        client.Encoding = Encoding.UTF8;

        var response = client.DownloadString("https://payments-uk-sandbox.amazon.com/merchantAccount/AAAJJFJJJFJJF/accountStatus?countryOfEstablishment=UK&ledgerCurrency=GBP");

        return response;
    }
}

чем от JS на кнопку нажмите создать запрос на ваш сайт

$.ajax({method: "GET",url: "/home/GetAccountStatus"}).done(function( msg ) {
alert( "Data received: " + msg );});
Другие вопросы по тегам