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 );});