亚马逊支付 - 阻止跨源请求

时间:2017-06-28 16:20:36

标签: c# amazon-web-services model-view-controller sitecore8.1 amazon-pay

我已经看过很多关于跨源请求被阻止的帖子,但对我来说都没有什么意义。

我正在将Amazon Pay整合到Sitecore / MVC网站中,一切顺利。但是在页面上,我正在渲染按钮,我已经开始看到错误。如果我在Chrome浏览器中打开开发人员工具然后加载页面,我看到它是红色的:

  

GET   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'。

从我正在阅读的内容和我理解它的方式来看,问题出在亚马逊方面。这是有道理的,因为我昨天没有收到此错误,并且我没有更改我页面上的任何代码。

有人可以告诉我,如果我有这个权利吗?有什么我能做的吗?我确实在亚马逊有一个整合联系人,但他们花了6天的时间来回答我的最后一个问题,所以我不会很快屏住呼吸回复。

1 个答案:

答案 0 :(得分:1)

您应该从后端调用此方法,如果需要,请在前端显示。 出现CORS是因为亚马逊因安全问题而不允许在其他网站的前端使用此方法。

需要做什么: 你需要在你的网站创建方法创建web requrest到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 on按钮点击创建对您网站的请求

$.ajax({method: "GET",url: "/home/GetAccountStatus"}).done(function( msg ) {
alert( "Data received: " + msg );});