【问题标题】:Amazon Pay - Cross-Origin Request BlockedAmazon Pay - 跨域请求被阻止
【发布时间】:2017-12-02 03:14:54
【问题描述】:

我已经看过并阅读了很多关于 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”缺失)。

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

谁能告诉我我是否有这个权利?有什么我可以做的吗?我确实在 Amazon 有一个集成联系人,但他们花了 6 天时间来回答我的最后一个问题,所以我不会屏住呼吸等待很快的回复。

【问题讨论】:

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


    【解决方案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 );});
    

    【讨论】:

    • 想解释清楚一点吗?
    • 我使用的代码直接来自亚马逊集成团队,直到昨天都可以正常工作。
    猜你喜欢
    • 2021-06-26
    • 2014-10-13
    • 2019-11-04
    • 2017-02-06
    • 2017-01-04
    • 2014-12-27
    • 2020-01-03
    相关资源
    最近更新 更多