繁体   English   中英

JWT ABCchrome 中的不记名令牌 header

[英]JWT Bearer token in ABCchrome header

I am using ABCPdf 11 to convert html to pdf, my html page which needs to be converted required JWT token so that needs to be passed to ABCChrome so it can use the JWT token. 我尝试了以下方法,但身份验证仍然失败:

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之后,当我从 pdf 库中获得 http 状态时,我确实得到了 401 http 状态代码,它确认了

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

这里的状态是 401 - 未授权

ABCChrome 引擎当前不支持 HttpAdditionalHeaders 属性。 ABCChrome 支持的唯一 HtmlOptions 在此处指定。

您可以尝试以下几件事:

  1. 检查目标服务器是否支持通过 GET 请求参数发送 web 令牌 - 我猜你可能已经这样做了:-)
  2. 将 AddImageUrl 请求 URL 发送到中间 web 服务器(甚至是本地HttpServer )到可以根据任何 GET 参数为您获取页面的脚本。
  3. 如果您尝试访问的服务接受 ajax 请求,您可以尝试使用 javascript 将响应注入使用 XMLHttpRequest.setRequestHeader() 的页面。 注意,如果您为此使用本地文件(例如 file://),您可能会遇到一些 Chromium 强制执行的 JavaScript 安全问题。

我知道 WebSupergoo 为他们的所有许可证提供免费支持,包括试用许可证。

祝你好运。

通过电子邮件发送 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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM