C# 亚马逊支付-跨来源请求被阻止

C# 亚马逊支付-跨来源请求被阻止,c#,amazon-web-services,model-view-controller,sitecore8.1,amazon-pay,C#,Amazon Web Services,Model View Controller,Sitecore8.1,Amazon Pay,我已经看到和阅读了许多关于跨来源请求被阻止的帖子,但没有一篇对我有多大意义 我正在将Amazon Pay集成到Sitecore/MVC站点中,一切进展顺利。然而,在我呈现按钮的页面上,我开始看到一个错误。如果我在Firefox的Chrome浏览器中打开开发者工具,然后加载页面,我会看到这是红色的: 得到 200 OK 66ms Widgets.js(第43行) 其次是: 已阻止跨源请求:同一源策略不允许读取 位于的远程资源 . (原因:缺少CORS标头“访问控制允许原点”) 从我阅读的内容和我对

我已经看到和阅读了许多关于跨来源请求被阻止的帖子,但没有一篇对我有多大意义

我正在将Amazon Pay集成到Sitecore/MVC站点中,一切进展顺利。然而,在我呈现按钮的页面上,我开始看到一个错误。如果我在Firefox的Chrome浏览器中打开开发者工具,然后加载页面,我会看到这是红色的:

得到 200 OK 66ms Widgets.js(第43行)

其次是:

已阻止跨源请求:同一源策略不允许读取 位于的远程资源 . (原因:缺少CORS标头“访问控制允许原点”)

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


有人能告诉我我是否有这个权利吗?有什么我能做的吗?我在亚马逊有一个集成联系人,但他们花了6天时间回答了我的最后一个问题,因此我不会屏住呼吸等待尽快答复。

您应该从后端调用此消息,如果需要,请在前端显示。 CORS的出现是因为亚马逊由于安全问题不允许在另一个站点的前端使用这种方法

需要做什么: 您需要在您的网站中创建一个方法,该方法将创建WebRequirest到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;
    }
}
而不是从JSON按钮点击创建请求到您的站点

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

我使用的代码直接来自Amazon集成团队,一直到昨天都没有问题。