在你因为这违背了 ajax 的目的而恨我之前,这是我的推理:
我有一个 HTML5 PhoneGap 应用程序,它使用表单身份验证对 asp.NET MVC Web 服务进行数据访问。我想链接到返回 PDF 文件的操作,然后在移动 Safari 中显示该文件。问题是,如果我执行 a target="_blank"
,则请求来自 safari,它没有存储在应用程序中的表单身份验证 auth cookie,因此请求未经过身份验证。如果我不使用target="_blank"
,则请求已正确验证,并加载到整个 web 视图(PhoneGap)中,我无权访问 Safari 提供的“在 iBooks 中打开”或“在..中打开”按钮。
我希望能够通过在新选项卡中打开 ajax 加载 PDF,然后在 safari 中显示结果。这可能吗?
编辑:我现在正在尝试这个:
$.ajax({
url: downloadURL,
type: 'GET',
xhrFields: {
withCredentials: true
},
success: function(data, textStatus, jqXHR) {
//console.log(data);
window.location = 'data:application/pdf;'+data;
},
error: function(jqXHR, textStatus, errorThrown) {
console.log('Error retrieving data: ' + errorThrown + '\n' + jqXHR);
},
complete: function(jqXHR, textStatus) {
}
});
但这会导致 pdf 下载无效。知道如何解决吗?