0

PayUmoney 支払いゲートウェイを MEAN スタック アプリケーションに統合しています。angularコントローラーからノードへのすべての必須フィールドを取得しており、ハッシュキーも生成されています。その後、「https://test.payu.in/_payment」にリダイレクトされません。私は以下のように試しました

app.js

router.post('/buyItem',function(req,res){
    var KEY = "OygoFs";
    var SALT = "BV1QBwCv";

    var shasum = crypto.createHash('sha512'),
        reqData = req.body;
        dataSequence = KEY + '|' + reqData.txnid + '|' + reqData.amount + '|' + reqData.productinfo + '|' + reqData.firstname + '|' + reqData.email + '|||||||||||' + SALT;
        resultKey = shasum.update(dataSequence).digest('hex');
    res.redirect('https://test.payu.in/_payment');
});

実行すると、このエラーが発生しました。

XMLHttpRequest cannot load http://locahost:3000/api/buyItem. Redirect from 'http://locahost:3000/api/buyItem' to 'https://test.payu.in/_payment' has been blocked by CORS policy: Request requires preflight, which is disallowed to follow cross-origin redirect.
4

2 に答える 2

0

あなたの NodeJs-Express は、payUmoney 自体があなたを承認するまで、payu money にリクエストを送信できません。これが、CORS エラーが発生した理由です。CORS は、クロス オリジン リソース シェアリングを意味します。example1 www からの .com。例2.com .

したがって、この問題の解決策は、リダイレクト先の PayUmoney サーバーで CORS フィルターを設定する必要があることです。セキュリティ対策のためにCORSフィルターを常に無効にするため、展開されているサーバーまたはアプリに送信することはできません。リダイレクト機能を確認したい場合は、これができることです。API 呼び出しをリッスンしている別の NodeJs サーバーを実行します。app.js (サーバー側) に次の行を追加します。

    app.all('/*', function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.header("Access-Control-Allow-Methods", "GET, POST, PUT");
    next();
});

: app は、express (var app = require('express');) への参照です。

この新しく作成された NodeJs アプリにリダイレクトすると、リダイレクト機能が確実に機能します。

これがお役に立てば幸いです、よろしくShohil

于 2016-11-23T11:50:48.300 に答える
0

Angular テンプレートのソースに使用される URL が安全であることを確認するには、リダイレクト URL をホワイトリスト リソースとして構成する必要があります。

app.config(['$sceDelegateProvider', function($sceDelegateProvider) {
         $sceDelegateProvider.resourceUrlWhitelist(['self', 'https://test.payu.in/_payment/**']);

}]);

ドキュメントから: https://docs.angularjs.org/api/ng/provider/ $sceDelegateProvider

于 2016-11-23T11:30:34.883 に答える