Мне поручено отправить по электронной почте некоторые файлы с нашего сайта SharePoint (не знаю версию или хостинг, но могу узнать). В качестве быстрого теста я получил доступ к одному из файлов, создал ссылку «Любой, у кого есть ссылка для просмотра» и вставил ее в код. Этот код возвращает 403.
То же самое со ссылкой на Dropbox работает как положено. Я убедился, что к файлу SP можно получить доступ за пределами нашей сети, с моего телефона, на персональном ноутбуке и т. Д. c, поэтому он фактически является анонимным. Очевидно, мне не хватает магического заголовка или чего-то еще. Я подозревал перенаправления, но после их получения я все равно получаю 403.
Причина, по которой мне нужна общая ссылка, заключается в том, что у нас есть "EmailService", который хочет URL для любых вложений. Это на самом деле тот код, который не работает, но я могу воспроизводить локально.
Это то, что делает служба:
private static void Download()
{
var webClient = new WebClient();
var data = webClient.DownloadData("https://oursharepointaddy.com/:i:/s/blah/funkyShareurlhere?e=somestuffhere&download=1");
}
При использовании F12 в Chrome, я заметил перенаправление так Я обработал это в коде ниже. Он с радостью следует за 302, затем БУМ, 403.
private static void DownloadII()
{
var uri = $"https://oursharepointaddy.com/:i:/s/blah/funkyShareurlhere?e=somestuffhere&download=1";
while (true)
{
var request = new HttpRequestMessage(HttpMethod.Post, uri);
var handler = new HttpClientHandler {AllowAutoRedirect = false};
var response = new HttpClient(handler).SendAsync(request).ConfigureAwait(false).GetAwaiter().GetResult();
var statusCode = (int) response.StatusCode;
if (statusCode >= 300 && statusCode <= 399)
{
var redirectUri = response.Headers.Location;
if (!redirectUri.IsAbsoluteUri)
{
redirectUri = new Uri(request.RequestUri.GetLeftPart(UriPartial.Authority) + redirectUri);
}
uri = redirectUri.AbsoluteUri;
continue;
}
if (response.IsSuccessStatusCode)
{
var data = response.Content.ReadAsStreamAsync().GetAwaiter().GetResult();
}
}
}
Я также получаю 403 через Почтальона. Браузеры вроде бы в порядке. Даже в режиме инкогнито в Chrome ... нет проблем. Я пробовал различные заголовки (UserAgent и некоторые другие, которые я заметил в Chrome), добавил и удалил download=1
. Я в тупике.