我已经看过很多关于跨源请求被阻止的帖子,但对我来说都没有什么意义。
我正在将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天的时间来回答我的最后一个问题,所以我不会很快屏住呼吸回复。
答案 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 );});