Сохранить заголовок HTTP после перенаправления - PullRequest
3 голосов
/ 14 сентября 2011

Я пытаюсь загрузить файл из Документов Google через мое приложение ASP.Net.

Поскольку я использую OAuth, я сгенерировал подпись в строку авторизации.

Из документации Google Docs, чтобы получить доступ к ее ресурсу, мне нужно будет добавить:

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. Таким образом я получаю 401 Not Authorized.

Некоторые прочитали сказали, что это невозможно. Есть ли взломать вокруг?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 14 сентября 2011

Вы не можете переслать заголовок. Ваша единственная ставка - попытаться использовать jQuery / javascript на странице перенаправления, чтобы добавить заголовки, а затем сделать запрос GET. Я даже не уверен, что вы можете, так как запросы AJAX не могут быть использованы для загрузки файлов.

На самом деле .. Я тоже не думаю, что это сработает. Итак - я должен сказать нет, вы не можете сделать это для загрузки файла. Однако вы можете сделать запрос с сервера и затем передать его клиенту?

EDIT Я ответил на это в прошлом: jQuery доставка файла с вызовом AJAX

Поскольку jQuery get является сокращенной формой .ajax - это МОЖЕТ работать, выполняя ajax-вызов jQuery с указанием get. Попробуйте и дайте нам знать результаты.

http://api.jquery.com/jQuery.ajax#options

Для некоторого кода смотрите: Передать заголовки запроса в вызове JQuery AJAX GET

0 голосов
/ 09 августа 2018

В express.js есть возможность перенаправить ответ как с заголовками, так и с куки:

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 есть нечто подобное.

...