在安卓上出现的Http失败响应:(未知url):0未知错误。

6

我有一个 Ionic 应用,在 iOS 上运行得非常好,但在 Android 上运行时出现了错误。

Http failure response for (unknown url): 0 Unknown Error

在此输入图片说明

我为什么会得到这个错误?我已经在服务器端允许了CORS,因为它在iOS设备上工作。

有什么帮助吗?

编辑

这是我在app.js文件中的内容。

const cors = require('cors');

然后我只需使用默认选项来使用它。

app.use(cors());

1
不,它在Android上不行,但在iOS上可以。 - null
1
@KirkLarkin你可否在别处发起成功请求? - null
1
它正在尝试访问该服务器'httpbin.org'。 - null
1
当我登录时,我必须通过URL发送凭据。使用该URL时,由于不接受凭据属性,它显然会失败。那么我应该如何表达这个问题呢? - null
你的云 API 直接从浏览器访问吗? - NullPointer
@NullPointer 是的,它可以从浏览器 Chrome 中访问,并且在 Chrome 上的所有模拟器上都可以使用。 - null
4个回答

2

如果您正在使用localhost,请将其更改为本地主机的IP地址。 Android似乎不支持此功能,而iOS则支持。

如果不起作用,请尝试实际主机名。


这是我尝试与云而非本地进行交互时发生的情况。 - null

1

首先,您不需要使用CORS从Android设备调用API。

其次,可能是您的服务器拒绝了您的请求。如果您正在使用云,则您的服务器必须接受来自任何IP的请求。必须有一个选项允许IP地址,将0.0.0.1到254.254.254.254放置在那里,以便每个用户都可以调用您的API。

第三,您需要在config.xml中允许来源,并且在CROS请求的标头中也要允许。检查您的API标头和config文件。

第四,如果您的服务正在运行http下,这也可能是问题所在。通过添加SSL证书来保护您的服务。这可能会解决您的问题。


感谢您的回答,首先我正在使用 AWS,它接受了几乎所有 IP 的请求,因为我设置了这样的方式。我检查了 config.xml 文件,发现其中有这样一行代码 <access origin="*" />。我认为这意味着它允许所有的东西。 - null
我认为您的服务是在http而不是https下运行。这可能是因为您的服务没有通过SSL进行保护。如果您的服务没有SSL证书,请向您的服务添加SSL证书。我也会更新我的答案。 - ZearaeZ
如果您正在使用 NativeHttp,则有一个选项可以不检查 SSL 证书。在调用 HTTP 请求之前,请尝试使用此代码:this.http.setSSLCertMode('nocheck');。但是,这仅适用于测试目的,最好不要在生产环境中使用。 - ZearaeZ
我目前还没有使用SSL。我正在使用@angular/common/http中的HttpClient。我不确定NativeHttp - null

1
我们的应用程序多次遇到了相同的错误。在我们的情况下,这是请求头的问题以及服务器端的CORS问题。
如果您模拟Android设备并在浏览器中重现此错误,则可以将其与iOS请求的标题进行比较。
或者您可以尝试记录服务器端收到的请求,以查看请求是否到达服务器以及设置了哪些标头。
希望我的建议能够帮助您 :)

-1

解决方案是在您的环境中添加NODE_TLS_REJECT_UNAUTHORIZED=0以禁用Node.js中的SSL验证。

注意:您应该只在开发中设置此项,不要在生产中这样做。

编辑

在这种情况下,这表明您的服务器上没有正确设置CORS。请查看问题here


谢谢,但我在哪里可以找到那个属性? - null
顺便问一下,这是我尝试与真实的生产服务器交互时发生的。有什么想法吗? - null
实际上我已经尝试过了,但是我仍然得到相同的错误。我在我的Node.js应用程序文件app.js中添加了process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; - null
我使用了 cor npm 模块。 - null
是的,你已经提到了,但我在那里看到了一个问题。请检查是否已正确配置。 - Sajeetharan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接