ScriptX logotype
  • Getting started
  • Documentation
  • Samples
  • Pricing
Free Trial Downloads
  • Home
  • Getting started
  • Documentation
  • Samples
  • Pricing
Developers ›  Knowledge Bank ›  Articles ›  Protected Content

Accessing protected content with ScriptX.Services

Systems will often require that a user authenticates/logs-in which creates a session on the server and the session will authorise access to all protected content.

Frequently, static content such as images, css and script are not protected - anonymous access is allowed. However, some systems may protect all content or, for example, images that are dynamically created will require the session context.

Typically, server sessions are maintained by the use of a cookie delivered to the browser and in turn the browser sends the cookie with each request to the server.

With ScriptX.Addon, printing inherited the session cookies from the hosting browser.

This does not happen with ScriptX.Services. The html to be printed is gathered from the browser and sent to ScriptX.Services for printing - the html will contain references (url) to non-html content such as images and css with the result that referenced content such as images may not print and/or referenced content such as css is not used as expected.

Solutions

Potential solutions to this problem depend upon the content.

Dynamically created content

Dynamically created content may be able to be accessed by providing a session token (e.g. the cookie value) as a query parameter.

If this is not possible then an alternative for content such as images is to return a data url for the content rather than the image itself. A dataurl will be sent as part of the content to be printed.

If this is not practical to implement then the solution applied for static content can be used.

Static content

The delivery of protected static content can be enabled by providing the session cookie/cookies to ScriptX.Services. It will then use the cookie/cookies when making requests for referenced content.

For this to work, ScriptX Server 10.4.0 or later is required (10.4.8 and later support multiple cookies as required by systems such as Cold Fusion).

ScriptX Server 10.4.0 is included with ScriptX.Services for Windows PC 2.12.0 and later, 10.4.8 (and higher) is included with 2.15.5 and later

Also, the cookie value must be available to client javascript. The cookie will likely be marked as httponly and will therefore be unavailable to be read from the browser cookie jar.

As a consequence, the value must be written out by the server side code.

For example:


<script type="text/javascript">
   var authCookie = "ASP.NET_SessionId=@HttpContext.Current.Session.SessionID" 
     + "|@FormsAuthentication.FormsCookieName=@authCookie.Value";
</script>

Library support

The javascript libraries from MeadCo facilitate migration from ScriptX.Addon to ScriptX.Service. Either can be used to provde the cookie(s).

 MeadCoScriptXJS Library v1.10.0 and later.

Use the SetContentAuthorisationCookie method to provide the cookies to send with referenced content requests when printing. This call will do nothing if the browser is IE and ScriptX.Addon is being used.


MeadCo.ScriptX.SetContentAuthorisationCookie(authCookie);

 ScriptX.Services Client Library

If only the ScriptX Client library is being used, then:


MeadCo.ScriptX.Print.authorisationCookie = authCookie;

API Support

The ScriptX.Services API provides support via protectedContentAccess. See POST print.

Protected PDF documents

The above discussion also applies to printing PDF documents. If the documents are protected by requiring an authenticated session then provide the required session cookie. Alternatively, use the support for printing base64 encoded data.

  • Knowledge Bank
  • 'How To' Guides
    • ScriptX.Services
      • Introduction
      • Getting started
      • Evaluate with modern code
      • Maintaining investment in current code
        • Stage 1: Adding UI
        • Stage 2: Printing with ScriptX.Services
        • Stage 3: Summary and review
        • Stage 4: Error reporting
        • Stage 5: Prompted printing
        • Stage 6: Preparing for advanced uses
        • Stage 7: WaitForSpoolingComplete
        • Stage 8: Recommendations for some common issues
      • Printing with the API
      • MeadCoScriptXJS Library
      • Installing ScriptX.Services
        • For Windows PC
        • For On Premise Devices hosted on Windows Server
        • For On Premise Devices hosted on Windows 10/11
        • Configure options For On Premise Devices
        • Cloud
      • Orchestrator
      • Debugging
      • License deployment
        • For Windows PC
        • For On Premise Devices
      • Samples
        • Configure for Windows PC
        • Configure for On Premise
        • Configure for Cloud
    • Security Manager
      • Deploying a license or revision
    • ScriptX.Add-on
      • Introduction
      • Installing ScriptX on client PCs
      • Basic printing with ScriptX
      • Advanced printing features
      • Backwards compatibility
      • How to check if ScriptX is installed
      • License deployment
      • Quick start with Visual Studio
        • ASP.NET MVC
        • ASP.NET Web Forms
      • Nuget Packages
        • MeadCoScriptXJS Library
        • Installer helpers
        • ASP.NET WebForms Controls
        • Helpers for ASP.NET MVC
      • Client-side printing samples
  • Technical Reference
    • ScriptX.Services
      • Web service API
        • Service Description
          • (GET)
        • Licensing
          • licensing (GET)
          • licensing (POST)
          • licensing/ping (GET)
        • Printer
          • settings (GET)
          • current (GET)
          • current (PUT)
          • connection (PUT)
          • connection (DELETE)
        • PrintHtml
          • settings (GET)
          • deviceinfo (GET)
          • htmlPrintDefaults (GET)
          • print (POST)
          • status (GET)
          • download (GET)
          • canceljob (PUT)
        • PrintPdf
          • print (POST)
          • status (GET)
          • download (GET)
        • PrintDirect
          • print (POST)
      • Orchestrator API
        • v1
          • GET
        • v2
          • PUT
          • GET
      • ScriptX.Services compatibility roadmap
    • Security Manager
      • How it works
      • License Expiry
      • Testing for a valid license
      • About the license file (.mlf)
        • LICENSE
        • APPLICENSE
        • TITLE
        • DOMAINS
        • DOMAIN
        • PERMISSION
      • API
        • Apply
        • License
        • result
        • validLicense
    • ScriptX.Add-on
      • factory
        • baseUrl
        • ComponentVersionString
        • IsUniqueIDAvailable
        • OnDocumentComplete
        • relativeUrl
        • ResetUniqueID
        • ScriptXVersion
        • SecurityManagerVersion
        • Shutdown
        • UniqueID
      • printing
        • AddPrinterConnection
        • BatchPrintPDF
        • BatchPrintPDFEx
        • bottomMargin
        • collate
        • copies
        • currentPrinter
        • DefaultPrinter
        • disableUI
        • duplex
        • duplex2
        • EnumJobs
        • EnumPrinters
        • footer
        • GetJobsCount
        • GetMarginMeasure
        • header
        • headerFooterFont
        • IsSpooling
        • IsTemplateSupported
        • leftMargin
        • onafterprint
        • onbeforeprint
        • onbeforeunload
        • onpagesetup
        • onuserpagesetup
        • onuserprint
        • onuserprintpreview
        • orientation
        • OwnQueue
        • pageHeight
        • PageSetup
        • pageWidth
        • paperSize
        • paperSource
        • paperSource2
        • portrait
        • Preview
        • Print
        • printBackground
        • printer
        • PrintHTML
        • PrintHTMLEx
        • PrintPDF
        • PrintSetup
        • printToFileName
        • RemovePrinterConnection
        • rightMargin
        • SetMarginMeasure
        • SetPageRange
        • SetPreviewZoom
        • SetPrintScale
        • Sleep
        • templateURL
        • topMargin
        • TotalPrintPages
        • unprintableBottom
        • unprintableLeft
        • unprintableRight
        • unprintableTop
        • WaitForSpoolingComplete
      • printerControl
        • attributes
        • Bins
        • Forms
        • isLocal
        • isNetwork
        • isShared
        • Jobs
        • location
        • name
        • Pause
        • port
        • Purge
        • Resume
        • serverName
        • shareName
        • status
      • Job
        • Delete
        • Pause
        • Restart
        • Resume
      • enhancedFormatting
        • allFooterHeight
        • allHeaderHeight
        • allPagesFooter
        • allPagesHeader
        • extraFirstFooterHeight
        • extraFirstPageFooter
        • firstFooterHeight
        • firstHeaderHeight
        • firstPageFooter
        • firstPageHeader
        • pageRange
        • printingPass
      • rawPrinting
        • printer
        • printDocument
        • printString
    • Change and history logs
    • Articles
      • v1.15.x ScriptX Client Library
      • Dialogs with ScriptX.Services
      • Accessing protected content
      • Long term servicing (LTS)
 
ScriptX logotype
Home Getting started Documentation Samples Contact us

© 2025 Mead & Co Limited.

Follow us:
LinkedIn   GitHub
X

Warning:

This ScriptX.Add-on sample can only be viewed using Internet Explorer.