1

我已经看过并阅读了很多关于 Cross-Origin Request Blocked 的帖子,但它们对我来说都没有多大意义。

我正在将 Amazon Pay 集成到 Sitecore/MVC 网站中,一切顺利。但是在页面上我正在渲染按钮,我开始看到一个错误。如果我在 Firefox 或 Chrome 中打开开发人员工具,然后加载页面,我看到这是红色的:

获取 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 天时间来回答我的最后一个问题,所以我不会屏住呼吸等待很快的回复。

4

1 回答 1

1

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

需要做什么:您需要在您的网站中创建创建对亚马逊的网络请求并返回一些信息的方法,您应该从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 );});
于 2017-06-28T16:52:13.650 回答