Javascript 贝宝.net mvc CORS错误

Javascript 贝宝.net mvc CORS错误,javascript,asp.net-mvc,paypal,cors,Javascript,Asp.net Mvc,Paypal,Cors,我在这里学习PayPal REST教程: 我在我的控制器方法(如下)中有这个,我相信是重定向行导致了问题,前一行联系paypal获得了一个没有问题的id。payment.GetApprovalUrl()检索错误消息中列出的url: public ActionResult CreatePayment() { var userId = _userRepository.LoggedInUserId(); var cart = _cartRepository.GetCart(userId); var

我在这里学习PayPal REST教程:

我在我的控制器方法(如下)中有这个,我相信是重定向行导致了问题,前一行联系paypal获得了一个没有问题的id。payment.GetApprovalUrl()检索错误消息中列出的url:

public ActionResult CreatePayment()
{
var userId = _userRepository.LoggedInUserId(); 
var cart = _cartRepository.GetCart(userId);
var payment = PayPalRepository.CreatePayment(GetBaseUrl(), 
"sale",cart);
return Redirect(payment.GetApprovalUrl());
}
此操作方法通过paypal按钮javascript调用:

payment: function(resolve, reject) {
    // Set up the payment here, when the buyer clicks on the button
    var env = this.props.env;
    var client = this.props.client;

    var CREATE_PAYMENT_URL = 'http://localhost:3259/Payment/CreatePayment';
    return paypal.request.post(CREATE_PAYMENT_URL)
        .then(function (data) {
            console.log('data: ' + data);
            resolve(data.paymentID);
        })
        .catch(function (err) { reject(err); })
console.log语句从不执行,浏览器控制台显示此错误: 无法加载XMLHttpRequest。请求的资源上不存在“Access Control Allow Origin”标头

我将控制器标记为AllowCrossSiteJson属性(在stackoverflow上找到,将根据作者进行更新),如下所示:

public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var ctx = filterContext.RequestContext.HttpContext;
            var origin = ctx.Request.Headers["Origin"];
            var allowOrigin = !string.IsNullOrWhiteSpace(origin) ? origin : "*";
            ctx.Response.AddHeader("Access-Control-Allow-Origin", allowOrigin);
            ctx.Response.AddHeader("Access-Control-Allow-Headers", "*");
            ctx.Response.AddHeader("Access-Control-Allow-Credentials", "true");
            base.OnActionExecuting(filterContext);

        }

为了克服这个错误,我做错了什么,或者没有做什么?

解决方案是服务器端代码只应将payment.id作为json返回,不是授权url。

错误表明失败是因为来自
https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-7EL20553GB692634H
没有
访问控制允许来源
响应头。您对自己的服务器端代码所做的任何更改都不会解决这个问题。无论您配置自己的服务器发送什么标题,问题是Paypal没有发送正确的标题,并且您无法让Paypal发送任何其他响应标题。因此,您的选择是从后端代码向Paypal发出请求或设置CORS代理。我一定是做错了什么。。。本教程:具有相同的基本范例和完全相同的代码行:returnredirect(paypalRedirectUrl);该教程似乎完全是关于服务器端ASP.NET MVC配置和调用Paypal API的C#代码。问题中引用的错误是由于前端JavaScript代码调用某些Paypal端点造成的。因此,您可能已经编写了一些单独的前端JavaScript代码,或者后端正在生成一些代码(该代码与问题中的JavaScript代码段不同,后者请求
http://localhost:3259/Payment/CreatePayment
)。最后,你的浏览器拒绝让你的前端JavaScript代码访问来自Paypal的响应。我想问题可能是你的前端代码向
http://localhost:3259/Payment/CreatePayment
正在被重定向到
https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-c‌​heckout&token=EC-7EL‌​20553GB692634H
。可能是
返回重定向(payment.GetApprovalUrl())导致。如果是这种情况,我认为服务器端代码假定用户被导航到Paypal URL并看到响应。但是,您的前端代码似乎试图使用响应,而不是将用户导航到响应。一旦客户端收到payment.id,您将如何处理它?