我有一个准备好REST API的真实服务器。现在我正在开发一个angular2 Web应用程序,并希望在Web应用程序的开发阶段使用真正的REST API。
我正在使用angular-cli。
我的服务器不支持跨源访问,因此我无法直接访问服务器REST api。
我需要一些方法为我的webpack开发服务器提供请求/响应处理程序。
这可能是一个愚蠢的问题,因为我第一次尝试nodejs世界。
答案 0 :(得分:0)
你应该使用' cors'库允许服务器中的跨源
link:https://www.npmjs.com/package/cors
$ npm i -S cors
var cors = require(' cors');
如果你使用快递,你应该拨打'使用'与科尔一起工作:
app.use(CORS());
亚伊尔
答案 1 :(得分:0)
根据建议我编写了一个启用了CORS的代理http处理程序。这将简单地从应用程序请求并委托给实际的服务器。来自实际服务器的响应将被发送回请求Web应用程序。 从Web应用程序通过更改服务器的基本URL发送请求。 例如。而不是 http://your_real_server.com/dashboard 使用 http://localhost:7000/dashboard
var http = require('http');
var url = require('url');
var querystring = require('querystring');
///////////////////////////////////////////////////////////////
var remoteUrl = 'your_remote_server_base_url_without_http.com';
///////////////////////////////////////////////////////////////
http.createServer(function (request, response) {
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Headers", "X-Requested-With");
pathName = url.parse(request.url).pathname;
query = url.parse(request.url).query;
if (query != null) {
pathName += '?' + query;
}
console.log('Remote URL : ' + remoteUrl + pathName);
var options = {
host: remoteUrl,
path: pathName,
method: request.method
};
http.request(options, function (res) {
res.setEncoding('utf8');
var str = '';
res.on('data', function (chunk) {
str += chunk;
});
res.on('end', function () {
response.writeHead(200, { 'Content-type': 'text/json' });
response.write(str);
response.end();
});
}).end();
}).listen(7000, function () {
console.log('\n=============================================================');
console.log('================== Running at port 7000 ======================');
console.log('=============================================================\n');
});