HTTP状态码0是什么意思

我正在开发iOS项目。

在这个应用程序,我从服务器上下载图像。

问题:

在下载图片时,我收到请求超时 。 根据文档请求超时的HTTP状态码是408

但在我的应用程序,我得到HTTP状态码0以下错误

Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo=0xb9af710 {NSErrorFailingURLStringKey=http://xxxx.com/resources/p/PNG/1383906967_5621_63.jpg, NSErrorFailingURLKey=http://xxxx.com/resources/p/PNG/1383906967_5621_63.jpg, NSLocalizedDescription=The request timed out., NSUnderlyingError=0x13846870 "The request timed out."}

在互联网上search期间,我发现没有关于HTTP状态码0的信息。

任何人都可以向我解释这个?

没有HTTP状态代码0.您看到的是由您正在使用的API /库返回的0。 你将不得不检查文件。

NSHTTPURLResponse对象中的状态码0通常表示没有响应,并且可能由于各种原因而发生。 服务器将永远不会返回状态0,因为这不是一个有效的HTTP状态代码。

在你的情况下,你似乎得到一个0的状态​​代码,因为请求超时,0只是属性的默认值。 超时本身可能是由于各种原因,例如服务器没有及时响应,被防火墙阻止,或者整个networking连接中断。 通常在后者的情况下,虽然手机是足够聪明的,知道它没有networking连接,并会立即失败。 但是,它仍然会失败,显示状态码为0。

请注意,在状态码为0的情况下,在返回的NSError对象中捕获到真正的错误,而不是NSHTTPURLResponse

根据我的经验,HTTP状态408是非常罕见的。 我从来没有遇到过自己。 但是它明显用于客户端需要维护一个到服务器的活动套接字连接的情况,并且服务器正在等待客户端通过开放套接字发送更多的数据,但是它并没有在给定的时间内服务器用408状态码结束连接,实质上告诉客户“你花了太长时间”。

回应是空的。 大多数情况下代码将统计1xx,2xx,3xx,4xx,5xx。

HTTP状态码列表

在iOS SDK中当您的API调用超时时,您将获得状态0。

从我有限的经验,我会说,以下两种情况可能导致响应status code: 0 ,请记住, 他们可能会更多,但我知道这两个:

  • 你的连接可能反应缓慢。
  • 或者后端服务器不可用。

事情是, status: 0是稍微通用的,他们可能是更多的用例,触发一个空的响应体。

我们得到了错误:

GET http://localhost/pathToWebSite/somePage.aspx引发了http.status:0错误

这个调用是从调用VBS文件的Windows任务中完成的,所以为了排除这个问题,将浏览器指向了url,我们得到一个Privacy Error:

你的连接不是私人的

攻击者可能试图从本地主机上窃取您的信息(例如,密码,信息或信用卡)。 NET :: ERR_CERT_COMMON_NAME_INVALID

自动向Google报告可能的安全事件的详细信息。 隐私政策返回安全此服务器无法certificate它是本地主机; 其安全证书来自* .ourdomain.com。 这可能是由错误configuration或攻击者拦截您的连接引起的。 学到更多。

这是因为我们有一个IIS URL重写规则设置为强制连接使用https。 该规则将http:// localhost转移到https:// localhost,但是我们的SSL证书是基于外部面向的域名而不是localhost,因此将错误报告为状态码0.因此,隐私错误可能是一个非常模糊的原因对于这个状态码0。

在我们的情况下,解决scheme是为localhost的规则添加一个例外,并允许http://localhost/pathToWebSite/somePage.aspx使用http。 晦涩,是的,但我会在明年遇到这个,现在我会在谷歌search中find我的答案。

我有一个java脚本ajax客户端和nodejs快递应用服务器

客户端代码如下所示:

 ... var status1 = xmlHttpRequest.status; ... 

服务器代码如下所示:

 ... // An exception here results HTTP status codes in status1 (at client side above) ... ... var reqDb = http.request(options, requestCompleteCallback); ... ... function requestCompleteCallback(response) { ... // An exception here results in 0 in status1 (at client side above) ... } 

30分钟的努力来弄清楚这一点。
希望这篇文章有助于某人。

祝你好运。

在出入口超时时,错误回拨状态将为零。

 .error( function( data,status,headers,config){ console.log(status) } 

HTTP状态码