Node.js HTTP请求返回状态代码0未知错误

Node.js HTTP请求返回状态代码0未知错误,node.js,angular,express,ionic-framework,cors,Node.js,Angular,Express,Ionic Framework,Cors,我在安卓上的爱奥尼亚项目测试中调用了一个本地API,但它显示了Http响应状态代码0未知错误。我确实查找了许多解决方案,但没有得到帮助 app.use(function(req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Methods', 'GET, PUT, POST, DELETE, OPTIONS'); res.head

我在安卓上的爱奥尼亚项目测试中调用了一个本地API,但它显示了Http响应状态代码0未知错误。我确实查找了许多解决方案,但没有得到帮助

app.use(function(req, res, next) {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Methods', 'GET, PUT, POST, DELETE, OPTIONS');
    res.header("Access-Control-Allow-Credentials", "true",);
    res.header('Access-Control-Allow-Headers', 'Origin, X-Auth-Token, Accept, Content-Type, Authorization, Content-Length, X-Requested-With, x-access-token, Access-Control-Request-Method, Access-Control-Request-Headers');
  next();
});
方法请求API

    async loginWithFacebook(data) {
        console.log("api USER data from facebook ");
        console.log(data);

        let headers = new HttpHeaders({
            'Content-Type': 'application/json'
        });
        let options = {
            headers: headers
        };

        return await (this.http.post(environment.endpoint + "/users/facebook-login", data, options)).toPromise();
    }
由于某种原因,它无法调用API


您只是将头分配给HTTP响应,这对请求的CORS没有帮助。执行以下操作可能会有所帮助

使用终端在服务器根目录中安装cors包

npm i cors
将cors导入到app.js服务器的根文件中

const cors = require('cors')
为您的应用程序使用cors

app.use(cors()) 
您的最终代码应该是这样的

var express = require('express')
var cors = require('cors')
var app = express()
 
app.use(cors())
 
app.get('/products/:id', function (req, res, next) {
  res.json({msg: 'This is CORS-enabled for all origins!'})
})
 
app.listen(80, function () {
  console.log('CORS-enabled web server listening on port 80')
})

你能给我们看一下网络标签吗?@AlejandroCavazos我已经更新了我的答案,但是我仍然收到了相同的错误HttpErrorResponse{headers:HttpHeaders,状态:0,状态文本:未知错误,url:http://localhost:8000/users/facebook-登录,ok:false,}您尝试过邮递员的请求吗?或者任何其他API客户端?在postman中,即使不添加cors,它也可以正常工作。问题是当我在android设备上测试它时。请查看下面的链接。状态代码0的原因也可能是以下原因之一-非法跨源请求请参阅CORS-防火墙阻止或过滤-请求本身已在代码中取消-已安装的浏览器扩展正在将事情搞得一团糟,因为您是在Ionic中开发的,我假设您是从桌面浏览器进行开发的。有一些方法,我用来确认,是否是因为CORS而不是其他原因。在浏览器中禁用web安全并刷新页面。禁用mac中的安全性。打开-n-a/Applications/Google\Chrome.app/Contents/MacOS/Google\Chrome-args-user data dir=/tmp/Chrome_dev_sess_1-在Windows中禁用web安全,导航到Chrome文件夹,通常位于程序文件x86 Chrome.exe-user data dir=C:/Chrome dev session-禁用web安全