我正在尝试通过我的ASP.Net应用程序从Google Docs下载文件。
由于我使用的是OAuth,因此我生成了一个签名和授权字符串。
从Google文档文档中,要访问它的资源,我需要添加:
Authorization: <authorization string>
请求标题中的。
我写了一个片段来进行重定向:
context.Response.AddHeader("GData-Version", "3.0");
context.Response.AddHeader("Host", downloadLinkUrl.Host);
context.Response.AddHeader("Authorization", authorizaString);
context.Response.RedirectLocation = downloadLink;
context.Response.Redirect(downloadLink);
它重定向到downloadLink,但是从Firebug看到的Header信息丢失了。因此我得到401 Not Authorized。
有些read up说这是不可能的。有什么黑客攻击吗?
感谢。
答案 0 :(得分:2)
您无法转发标头。您唯一的选择是尝试在重定向页面上使用jQuery / javascript来添加标头,然后发出GET请求。我甚至不确定你是否可以,因为AJAX请求不能用于文件下载。
实际上......我认为这也不会有用。所以 - 我不得不说,你不能这样做文件下载。但是,您是否可以从服务器发出请求,然后将其流式传输到客户端?
修改强> 我过去回答过这个问题: jQuery delivery of a file with AJAX call
因为jQuery get是.ajax的简写形式 - 这可以通过执行指定'get'的jQuery ajax调用来实现。尝试一下,让我们知道结果。
http://api.jquery.com/jQuery.ajax#options
对于某些代码,请参阅: Pass request headers in a jQuery AJAX GET call
答案 1 :(得分:0)
在express.js中,可以使用标头和cookie重定向响应:
res.set('mykey', 'myvalue');
res.set('Access-Control-Expose-Headers', 'Set-Cookie, mykey');
res.cookie('mykey', 'myvalue', { maxAge: 900000, httpOnly: true });
res.redirect(302, url);
我相信.NET中也有类似的东西。