--- title: "Setting custom headers" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Setting custom headers} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} editor: markdown: wrap: sentence --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` Currently setting custom headers requires a little extra work because it requires `Network.enable` be called before using it. In the future we'll streamline things so that it will happen automatically. ``` r library(chromote) b <- ChromoteSession$new() # Currently need to manually enable Network domain notifications. Calling # b$Network$enable() would do it, but calling it directly will bypass the # callback counting and the notifications could get automatically disabled by a # different Network event. We'll enable notifications for the Network domain by # listening for a particular event. We'll also store a callback that will # decrement the callback counter, so that we can disable notifications after. disable_network_notifications <- b$Network$responseReceived(function (msg) NULL) b$Network$setExtraHTTPHeaders(headers = list( foo = "bar", header1 = "value1" )) # Visit a web page that prints out the request headers b$Page$navigate("http://scooterlabs.com/echo") b$screenshot(show = TRUE) # Unset extra headers. Note that `list(a=1)[0]` creates an empty _named_ list; # an empty unnamed list will cause an error because they're converted to JSON # differently. A named list becomes "{}", but an unnamed list becomes "[]". b$Network$setExtraHTTPHeaders(headers = list(a=1)[0]) # Request again b$Page$navigate("http://scooterlabs.com/echo") b$screenshot(show = TRUE) # Disable extra headers entirely, by decrementing Network callback counter, # which will disable Network notifications. disable_network_notifications() ```