【发布时间】:2016-11-25 05:46:05
【问题描述】:
在我们正在开发的网站上,我们有一个下载链接,必须提供给用户。但是,在获取 url 时,服务器可以在 JSON 中提供错误消息(然后将设置适当的标头和适当的 http 状态代码)或提供文件。
目前,我们正在使用 iframe 下载此文件,但这会阻止我们查看错误消息。虽然原则上可以这样做,但不能跨域完成,并且浏览器之间读取错误数据似乎不同(因为浏览器会将 json 解释为 html 并在其周围创建 html 标签)
我曾考虑使用 xmlhttprequest2 下载文件,并将其提供给用户,但是下载的文件可能很大,因此必须将其流式传输给用户。
因此,我正在寻找一种方法来下载文件或根据 http 状态代码读取错误消息。
API 设置
我可以根据自己的意愿更改 API,但是 API 被设计为公共 API,并且被设计为 REST API。这意味着,API 应该尽可能简单,并且使特定客户端代码工作的变通办法不应该对其他客户端造成任何混乱(因此 API 和客户端代码是解耦的)。
正在下载的文件在服务器上加密,只能通过 URL 中提供的信息解密。因此,分块传输很困难,因为提取一个块需要服务器解密整个文件。
【问题讨论】:
-
您是否可以控制服务器响应?您能否将响应更改为错误代码和错误消息或成功代码和文件 url?如果是这样,您可以进行 ajax 调用,并在成功时重定向到 url。如果这不起作用,请说明您的设置会阻止这种情况。
-
MIME的预期文件类型是什么? -
@TinMonkey,是的,我愿意。但总的来说,任何错误都是例外,我宁愿提出一个请求,但我刚刚开始使用下面描述的 HEAD 方法来实现。它还涉及 REST API,因此这样的重定向不会真正适合设计,但带有 HEAD 的方法当然会:)。
-
@guest271314 application/octet-stream
-
你能在出错时重定向吗?然后,您可以将错误重定向到包含哈希中错误的 url。然后该站点可以做一个简单的 window.parent.functionToDisplayError(error)
标签: javascript html iframe xmlhttprequest fileapi