Node.js HTTP请求返回状态代码0未知错误
我在安卓上的爱奥尼亚项目测试中调用了一个本地API,但它显示了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
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安全