2015-02-24 34 views
3

我試圖在向Node Node服務器下訂單後重定向到支付網關,但是我的瀏覽器都沒有讓我。Node.js表示重定向到遠程URL一直失敗(CORS)

這是我的代碼,它直接來自我的付款服務的代碼示例。

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(); 
}); 
+0

當我在瀏覽器中訪問https:// www.mollie.com/payscreen/pay/CtcH7nkDQr',然後檢查Chrome Developer Tools網絡選項卡中的標題時,我看不到任何這些標題。下面是我得到的完整標題:HTTP/1.1 200 OK 服務器:nginx 日期:2015年2月24日星期二00:46:24 GMT 內容類型:text/html內容長度:2142 連接:keep- alive Strict-Transport-Security:max-age = 15552000 X-XSS-Protection:1;模式=塊 X-Frame-Options:DENY Vary:Accept-Encoding 內容編碼:gzip X-Whom:dc1-web-3它實際上似乎是nginx,甚至不是nodejs。也許? – Markasoftware 2015-02-24 00:47:04

回答

1

我接受了Juicy Scripter的建議並嘗試使用現有的在線代理來查看它是否有效。我再也沒有收到這個錯誤,一切都很順利,但沒有發生實際的重定向。由於我的原始請求來自Angular的$ http模塊,所以不是很令人驚訝,所以響應在客戶端得到解決。無論如何,我最終將支付網址返回到我的Angular應用程序,並從那裏重定向到它。謝謝您的幫助!

1

你的問題涉及到的事實,https://www.mollie.com不響應使用CORS標頭,禁用來自瀏覽器的交叉源請求。

你可能會需要有某種形式的代理,使從服務器端代碼請求支付網關而不是通過XMLHttpRequest

請接受所需的有效載荷的路線,然後將其發送到支付網關,處理響應和返回結果。

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域名,好的!