我正在尝试通过Angular应用程序调用外部REST API。该API托管在单独的服务器/域上,因此,我们面临着CORS问题。为避免CORS问题,我试图在托管Angular应用程序的服务器上使用node js脚本创建直通服务。但是,当使用request / https模块从节点js脚本进行API调用时,我们会收到连接超时/连接被拒绝的错误。 [注意:我不允许在API末尾/代码的标头中进行任何更改]
当我们尝试使用Postman工具调用API时,我们能够收到响应。根据我对CORS的理解,由于相同的原始策略,出于安全原因,浏览器会阻止跨域请求。使用邮递员工具时,它们不受此政策限制,因此我们使用邮递员工具通过API获得响应。
此外,我还尝试通过命令行ping API服务器,但请求超时(我认为服务器上的ICMP连接已禁用)。
我想知道:
这是NodeJs脚本及其输出:
const shttp = require('http-https');
const userConf = {
path: 'https://<API DOMAIN>:5001/<API PATH>/',
method: 'POST'
};
const appDetails = {
UserID: 'sandboxadmin',
Password: 'xxxxx',
LoginType: 'LOGIN'
};
const httpRequest = shttp.request(userConf, function (res) {
res.setEncoding('utf8');
if (res.statusCode == 200) {
let body = "";
res.on('data', function (result) {
body += result;
});
res.on('end', function () {
console.log("API response is\n");
console.log(body);
});
} else {
console.log('Request failed:' + res.statusCode);
}
});
httpRequest.on('error', function (e) {
console.log('Request failed error :: ' + e);
});
httpRequest.write('body=' + JSON.stringify(appDetails));
httpRequest.end();
输出:
Request failed error :: Error: connect ECONNREFUSED 127.0.0.1:80