1

我已经看到并阅读了很多关于跨域请求被阻止的帖子,但没有一个对我很有意义。Amazon Pay - 跨境请求被屏蔽

我将Amazon Pay整合到Sitecore/MVC网站,一切进展顺利。然而,在我正在渲染按钮的页面上,我开始看到一个错误。如果我打开开发者工具在任的Firefox浏览器,然后加载我看到的页面,这是红:

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

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

请告诉我需要做的: 您需要创建网络requrest亚马逊网站的方法来创建并返回一些信息,你应该从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);}); 
+0

小心解释这个好一点吗? – Fred

+0

你需要更多信息吗? – itikhomi

+0

我使用的代码直接来自亚马逊整合团队,直到昨天才正常工作。 – Fred