Node.js表示重定向到远程URL保持失败(CORS)

时间:2015-02-24 00:41:20

标签: node.js express cors

我在Nodejs服务器上下订单后尝试重定向到支付网关,但我的浏览器都没有让我这么做。

这是我的代码,它直接来自我的付款服务的代码示例。

 res.writeHead(302, { Location : payment.getPaymentUrl() });
 res.end();

总是导致:

XMLHttpRequest cannot load https://www.mollie.com/payscreen/pay/CtcH7nkDQr. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:1337' is therefore not allowed access.

我已将我的应用配置为使用标题:

app.use(function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.header("Access-Control-Allow-Headers", "Content-Type");
    res.header("Access-Control-Max-Age", "3600");

    next();
});

3 个答案:

答案 0 :(得分:1)

您的问题与https://www.mollie.com未响应CORS标头,禁用来自浏览器的跨源请求这一事实有关。

您可能需要某种代理才能从服务器端代码向支付网关发出请求,而不是通过XMLHttpRequest

制作接受所需有效负载的路由,然后将其发送到支付网关,处理响应并返回结果。

答案 1 :(得分:1)

我接受了Juicy Scripter的建议并尝试使用现有的在线代理来查看它是否有效。我没有收到错误,一切似乎都很好,但没有发生实际的重定向。因为我的原始请求来自Angular的$ http模块,因此响应在客户端得到了解决,这并不奇怪。无论如何,我最终将付款URL返回到我的Angular应用程序并从那里重定向到它。谢谢你的帮助!

答案 2 :(得分:0)

a)如果您需要转发到其他网站?如果是这样,你应该使用这个

res.redirect( payment.getPaymentUrl() ); // Your Url go to

b)如果您需要发送网址,请以JSON格式发送,以便您使用HTML

在您的服务器中

res.json({ url : payment.getPaymentUrl() });

在您的HTML中

$.getJSON('MyUrl', function(data){
  console.log(data.url);
});

cors域名,好的!