`
yunnick
  • 浏览: 392288 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

文件下载服务器返回304导致的异常

304 
阅读更多

自己写了个存储服务代理服务,做了些权限验证等工作。

        代理使用了腾讯云cos存储,客户端发起下载文件的请求,代理服务则会对cos存储发起一个http调用,

返回200,则认为调用成功。

        后来客户端提出了支持断点续传需求,于是需要解析header中的range字段,并提交给cos存储(实际上将大部分header都透传给cos了);并将cos返回的206码,大部分header及字节流返回给客户端。代码发布后使用很顺利,没有任何异常。

        后这个存储服务,提供了api给浏览器使用,时不时的报出了500异常,挺频繁。查日志原来是cos存储返回了304码,我们代码认为这是个错误。

 

     HTTP 304: Not Modified 

     304码表示内容没有变化,但是以前的调用都是返回200, 304是如何出来的呢?

       经过一番推测,最有可能的就是因为请求中header的变化,于是仔细辨认header。。。发现

      主要是由两个字段引起的:

  •    etag
  •    if-none-match

字段解析可以参考:https://blog.csdn.net/spring21st/article/details/5837953

 

解决方法:

一:将相关etag,last-modified过滤掉,但这种方法比较粗暴,而且没有有效利用缓存机制。

二:认为304也是成功返回,并将相关heade和空body一并返回客户端,这个方法更合适些

 

 

分享到:
评论

相关推荐

    android上传文件至服务器提供客户端下载

    3. **保存文件**:接收服务器返回的响应流,将其写入本地文件系统。 4. **进度显示**:同样,可以展示下载进度并处理可能的网络中断,支持断点续传。 四、安全与优化 1. **身份验证**:为了防止未授权的上传和...

    手机端操作异常上传服务器.zip

    在这个特定的场景中,"手机端操作异常上传服务器"可能指的是用户在使用手机应用程序时遇到了错误,这些错误可能包括网络连接问题、数据格式错误、服务器接口调用失败等,导致无法正常向服务器上传数据。针对这样的...

    asp.net多文件下载 MVC多文件下载

    你可以使用`System.IO`命名空间中的类,如`FileInfo`,来获取文件信息,并创建`FileStreamResult`或`FileContentResult`对象,这些对象可以返回到浏览器以便下载。 2. **多文件下载策略**: - **合并文件**:一种...

    VC++实现文件下载(客户端和服务器)

    3. 错误处理:在网络不稳定或服务器异常时,应有重试机制,确保文件完整下载。 总结,通过VC++和SOCKET编程,结合select模型,我们可以构建一个功能完备的文件下载系统,既能在服务器端处理客户端的请求,又能在...

    .net core WebApi 文件上传服务文件下载

    在.NET Core WebAPI中,构建一个支持文件上传和下载的服务是一项常见的需求。这涉及到处理HTTP请求,存储文件,以及提供安全的文件访问机制。本文将深入探讨如何在.NET Core WebAPI项目中实现这一功能。 首先,我们...

    SMARTBI连接服务器做文件上传操作

    3. **服务器响应设置**:服务器返回的HTTP响应头可能设置了错误的Content-Type或Content-Disposition,使得浏览器误以为应该下载文件而非上传。 为了解决这个问题,我们需要检查前端的上传逻辑,确保事件处理函数...

    Struts2 下载取消报异常最终解决办法

    - 创建一个继承自`ActionSupport`的类,定义一个方法处理文件下载逻辑,返回`StreamResult`。 - 实现文件流读取,例如使用`FileInputStream`和`ServletOutputStream`。 - 设置HTTP响应头,如`response.setHeader...

    linux下c语言版基于epoll+reactor模式的http文件下载服务器.zip

    HTTP服务器需要理解请求报文并返回响应报文,实现文件的下载功能。 6. **文件下载服务**:HTTP文件下载服务器接收客户端的HTTP GET请求,根据请求中的URL找到对应的文件,然后将文件内容以HTTP响应的方式发送回...

    HttpSocket文件下载类 HttpSocketDownload

    3. 数据接收:接收到服务器的响应后,HttpSocketDownload类会读取返回的数据流,通常是文件的内容。在读取过程中,可以设置断点续传,以实现暂停和恢复下载。 4. 文件保存:数据接收完成后,HttpSocketDownload类会...

    Android文件下载(实现断点续传)

    此外,为了优化用户体验,可以采用线程同步机制,避免多个线程同时写入文件导致的数据混乱,以及使用队列管理下载任务,防止过多并发请求给服务器带来压力。 综上所述,实现Android文件的断点续传下载主要依赖于...

    socket 同步服务器存储

    此外,服务器通常会进行错误处理和异常捕获,确保在出现错误时能优雅地关闭连接并释放资源,防止内存泄漏和系统资源的过度消耗。在实际生产环境中,还会考虑安全性,例如添加身份验证、加密传输等措施。

    解决服务器返回null的问题.zip

    "解决服务器返回null的问题.zip"这个压缩包文件提供了解决这一问题的方案,特别关注于文本和富文本中的null值处理。下面将详细介绍如何通过runtime来解决这个问题,以及涉及到的关键技术点。 首先,理解null值在...

    我的文件服务器

    - **查询**: 客户端发送查询命令,服务器返回查询结果。 - **下载与上传**: 下载过程中,客户端发送下载命令,服务器发送文件数据;上传过程中,客户端发送上传命令,服务器接收文件数据。 2. **断点续传功能** ...

    任意文件下载知识点总结.zip

    2. **手动测试**:尝试在URL中输入不同路径,观察服务器是否返回预期之外的文件。 3. **日志分析**:监控服务器日志,寻找异常文件访问请求。 **漏洞利用:** 1. **路径构造**:通过尝试不同的路径遍历技术,如“.....

    异步请求时判断远程服务中断和本地服务器中断

    1. 远程服务中断:这通常指的是服务器端出现问题,如服务器宕机、网络连接断开、服务过载或返回错误状态码等。在JavaScript中,我们可以通过监听XMLHttpRequest对象的`onerror`事件来检测这种情况。如果请求在发送或...

    java使用HttpClient通过url下载文件到本地

    - 如果文件较大,考虑使用`StreamingEntity`或分块读写,以避免一次性加载整个响应内容导致内存溢出。 6. **DownloadData文件**: 压缩包中的`DownloadData`可能是示例代码的源文件,包含了实现上述功能的具体...

    asp.net post xml数据 (500) 内部服务器错误解决办法(源代码)

    2. **服务器配置问题**:IIS(Internet Information Services)或ASP.NET配置可能不正确,导致无法处理特定的POST请求。检查Web.config文件,确保配置允许POST操作,并且XML数据类型设置正确。 3. **代码异常**:在...

    java实现文件下载

    文件下载功能涉及到客户端与服务器端之间的交互,服务器需要将文件内容发送给客户端浏览器,然后由浏览器负责保存或打开该文件。Java Web开发中常用的框架之一是Struts2,它提供了简单而强大的方式来实现文件下载。 ...

    DNS 域名解析 与 域名服务器 是怎么回事 解析文档下载

    - **递归查询**:DNS服务器负责返回最终结果,如果没有找到则继续向上一级DNS服务器查询直到获取结果后返回给客户端。 - **迭代查询**:DNS服务器仅提供下一级DNS服务器的信息,客户端需要逐级查询直至找到最终...

    Android+php实现图片文件上传服务器

    3. **限制大小**:设置上传文件大小限制,防止过大文件导致服务器资源耗尽。 4. **权限控制**:对上传的文件设置合适的权限,防止被非法访问。 通过以上步骤,你可以构建一个基本的图片上传系统,将Android设备上的...

Global site tag (gtag.js) - Google Analytics