node.js - 如何在 Bluemix 中向 Node 应用程序发出 cors 请求

标签 node.js cors ibm-mobilefirst ibm-cloud

我正在bluemix上制作一个绑定(bind)到业务规则服务的nodeapp,并且我在mobilefirst上托管了另一个应用程序,我在其中创建了应用程序UI。我想从 mobilefirst 应用程序发送数据并接收数据,我被告知要使用 cors 请求,但我不知道该怎么做。

这是我的app.js 文件:

var app = require("express")(),
restler = require("restler"),
bodyParser = require("body-parser");

app.use(bodyParser.json());

app.use(function(request, response, next) {
    response.header("Access-Control-Allow-Origin", "*");
    response.header("Access-Control-Allow-Headers", "Origin, X-Requested-With,Content-Type, Accept");
    next();
});


app.post("/", function(request, response) {
    var options = {
        username: "resAdmin",
        password: "replace"
    };

    var url = "https://brsv2-6855bc66.ng.bluemix.net/DecisionService/rest" +  "/vacationsRuleApp/1.0/vacationsRuleProject/json";

    restler.postJson(url, request.body, options).on('complete', function(data) {
        response.send(data);
    });
});

app.listen(process.env.VCAP_APP_PORT || 8080);

这是我的客户端代码:

$.post( 
    "http://businessrules-vacationsruleapp.mybluemix.net/",
    {
        "employeeID": "jujuju",
        "loanAmount": 10517320,
        "theEmployee": {
        "seniority": 3,
        "annualSalary": 10517320,
        "nbOfExtraVacationDaysBasedOnSeniority": 10517320
    },
    "creditAmount": 20000,
    "__DecisionID__": "string",
    "AnnualSalary": 20000 },
    function( data ) {
        alert(JSON.stringify(data));
        console.log(data);
    }
);

最佳答案

您需要在 app.js 中包含以下内容。以下内容将允许根据请求进行 CORS。

app.js

var app = require("express")(),
 restler = require("restler"),
 bodyParser = require("body-parser");

app.use(bodyParser.json());

app.use(function(request, response, next) {
    response.header("Access-Control-Allow-Origin", "*");
    response.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    next();
});


app.post("/", function(request, response) {
    var options = {
        username: "replace",
        password: "replace"
    };

    var url = "https://brsv2-6855bc66.ng.bluemix.net/DecisionService/rest" + "/vacationsRuleApp/1.0/vacationsRuleProject/json";

    restler.postJson(url, request.body, options).on('complete', function(data) {
        response.send(data);
    });
});

app.listen(process.env.VCAP_APP_PORT || 8080);

然后在 JQuery 客户端,您可以执行以下操作。

$.ajax ({
    url: "https://businessrules-vacationsruleapp.mybluemix.net",
    type: "POST",
    data: JSON.stringify({ 
    "employeeID": "jujuju",
    "loanAmount": 10517320,
    "theEmployee": {
        "seniority": 3,
        "annualSalary": 10517320,
        "nbOfExtraVacationDaysBasedOnSeniority": 10517320
    },
    "creditAmount": 20000,
    "__DecisionID__": "string",
    "AnnualSalary": 20000 }),
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    success: function (data){
        console.log(data);
        $(".result").text(JSON.stringify(data));
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="result"></div>

无论您从 post 调用发送什么对象,都将被发送到业务规则服务。

关于node.js - 如何在 Bluemix 中向 Node 应用程序发出 cors 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31708119/

相关文章:

node.js - 有条件需要 express 吗?

node.js - async.series 功能未完成

javascript - 使用 Node 动态填充对象的 JSON 数组

node.js - AWS X 射线追踪在 Node.js 中的传出请求上中断

javascript - 如何使用 Access-Control-Allow-Origin : https://www. example.com?

javascript - 拒绝在 chrome 中获取不安全的 header "Location",在 firefox 中没有内容

javascript - Binance API 和 angular 4 httpClient

AngularJS 1.5 错误引导 IBM Mobilefirst

javascript - 如何使用javascript从网站获取数据表?

android - IBM 工作灯 : Integrating server generated pages in app