如何对Bluemix中的节点应用程序执行cors请求

我在bluemix上制作了一个nodeapp,并且绑定到了业务规则服务上,而且我还在mobilefirst上创build了另一个应用程序,我创build了我的应用程序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> 

CORS npm模块使得Express非常易于使用。

 var express = require('express') , cors = require('cors') , app = express(); app.use(cors()); 

https://www.npmjs.com/package/cors