2013-03-17 76 views
1

我正在将Intranet与文档管理系统集成。 DMS有一个SOAP API。我们构建了一个接收REST调用,进行SOAP调用并返回JSON或文档数据的客户端。已通过身份验证的AJAX文件下载

问题是所有AJAX下载解决方案似乎都使​​用iFrame(请参阅John Culniver's filedownload plugin)。

我不能使用它,因为我需要在标题中提供身份验证凭据。我能想到的唯一的其他潜在解决方案是使用window.open(如果我可以通过浏览器弹出窗口阻止)。

有没有人有另一个潜在的解决方案,或者如何可以做window.open?

谢谢

+0

@ n1ckolas他不是在谈论下载,不能上传? – ryan 2013-03-17 19:53:28

+0

你使用jQuery或不使用jQuery? – ryan 2013-03-17 19:53:50

+0

确实。对不起这是我的错。 – n1ckolas 2013-03-17 19:54:30

回答

2

我不认为有这个问题的客户端解决方案。 window.open不会让您设置请求标头。您需要做一些事情,比如向服务器发送一个cookie或其他值,并添加服务器端代码,以减轻对请求头的需求。

见答案:

+0

非常感谢。我想到我可能需要构建一个临时URL来为文件提供服务并指向用户。我会看看他们是否有其他选择,并在这里发布我找到任何。 – 2013-03-17 20:21:20

+2

唉,我们通过下载pdf数据和[创建一个临时的URL.createObjectURL]来关闭(http://stackoverflow.com/questions/15467747/properly-create-and-serve-pdf-blob-via-html5-file- and-url-apis),但现代浏览器并不完全处于我们可以对二进制文件执行此操作的地步......至少这是我在挖掘数小时后发现的。我将不得不临时提供该文件并在AJAX响应中发送文档URL。谢谢。 – 2013-03-18 16:03:39

+0

我第二@EricH。目前唯一的方法是创建一个具有唯一随机URI的临时文件,通过Ajax请求将其发回,并在第二次链接点击或浏览器重定向时下载该文件。新路径不应该有任何身份验证 – Majid 2015-10-01 18:55:11

相关问题