【问题标题】:Node.js express redirect to remote URL keeps failing (CORS)Node.js 快速重定向到远程 URL 不断失败 (CORS)
【发布时间】:2015-04-25 12:27:29
【问题描述】:

在我的 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();
});

【问题讨论】:

  • 当我在浏览器中转到https://www.mollie.com/payscreen/pay/CtcH7nkDQr,然后从 Chrome 开发人员工具网络选项卡中检查标头时,我看不到任何标头。这是我得到的完整标题:HTTP/1.1 200 OK Server: nginx Date: Tue, 24 Feb 2015 00:46:24 GMT Content-Type: text/html Content-Length: 2142 Connection: keep-alive Strict-Transport-Security: max-age=15552000 X-XSS-Protection: 1; mode=block X-Frame-Options: DENY Vary: Accept-Encoding Content-Encoding: gzip X-Whom: dc1-web-3 它实际上似乎是 nginx,甚至不是 nodejs。也许?

标签: node.js express cors


【解决方案1】:

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

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

b) 如果需要发送url,发送JSON格式,这样就拿HTML了

在你的服务器中

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

在您的 HTML 中

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

cors 域,好吧!

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      创建一个接受所需负载的路由,然后将其发送到支付网关,处理响应并返回结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-14
        • 1970-01-01
        • 2017-08-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-24
        • 2017-08-26
        相关资源
        最近更新 更多