Токен на предъявителя JWT в заголовке ABCchrome - PullRequest
0 голосов
/ 25 сентября 2019

Я использую ABCPdf 11 для преобразования html в pdf, моя html-страница, которую необходимо преобразовать, требует токен JWT, чтобы его можно было передать в ABCChrome, чтобы он мог использовать токен JWT.Я пробовал следующее, но аутентификация все еще не удается:

doc.HtmlOptions.HttpAdditionalHeaders = $"Authorization: Bearer {accessToken}";

Я следовал примеру отсюда: https://www.websupergoo.com/helppdfnet/default.htm?page=source%2F5-abcpdf%2Fxhtmloptions%2F2-properties%2Fhttpadditionalheaders.htm

Из описания в приведенном выше URL, я также попробовал следующие варианты:

doc.HtmlOptions.NoCookie = true;
doc.HtmlOptions.Media = MediaType.Screen;

После добавления HttpAdditionalHeaders и когда я получаю статус http из библиотеки pdf, я получаю 401 код статуса http, который подтверждает

var imageId = doc.AddImageUrl(model.Url);
var status = doc.HtmlOptions.ForChrome.GetHttpStatusCode(imageId);

Статус здесь 401- несанкционированный

Ответы [ 2 ]

1 голос
/ 26 сентября 2019

Поддержка ABCPdf по электронной почте и, к сожалению, ABCChrome не поддерживает свойство HttpAdditionalHeaders, поэтому обходной путь заключается в том, чтобы самостоятельно загрузить html и преобразовать его в PDF, см. Пример ниже:

var imageId = doc.AddImageHtml(html); // <- html downloaded from auth url

Также не забудьтедобавить подкачку:

// add all pages to pdf
while (doc.Chainable(imageId))
{
    doc.Page = doc.AddPage();
    imageId = doc.AddImageToChain(imageId);
}

for (int i = 1; i <= doc.PageCount; i++)
{
    doc.PageNumber = i;
    doc.Flatten();
}
1 голос
/ 26 сентября 2019

Свойство HttpAdditionalHeaders в настоящее время не поддерживается движком ABCChrome.Здесь указываются только HtmlOptions, поддерживаемые ABCChrome .

Можно попробовать несколько вещей:

  1. Проверьте, поддерживает ли целевой сервер отправку веб-токеначерез параметры запроса GET - я думаю, вы, вероятно, уже сделали это :-)
  2. Создайте URL-адрес запроса AddImageUrl для веб-сервера-посредника (даже локального HttpServer ) для сценария, который можетполучить страницу для вас на основе любых параметров GET.
  3. Если служба, к которой вы пытаетесь получить доступ, принимает запросы ajax, вы можете попробовать использовать javascript для вставки ответа на страницу с помощью XMLHttpRequest.setRequestHeader ().Примечание: если вы используете для этого локальный файл (например, file: //), вы можете столкнуться с некоторыми проблемами безопасности JavaScript с применением Chromium.

Я знаю, что WebSupergoo предлагает бесплатную поддержку для всех их лицензий, включая пробные лицензии.

Удачи.

...