req_headers() allows you to set the value of any header.

req_headers(.req, ...)

Arguments

.req

A request.

...

Name-value pairs of headers and their values.

  • Use NULL to reset a value to httr's default

  • Use "" to remove a header

  • Use a character vector to repeat a header.

Value

A modified HTTP request.

Examples

req <- request("http://example.com")

# Use req_headers() to add arbitrary additional headers to the request
req %>%
  req_headers(MyHeader = "MyValue") %>%
  req_dry_run()
#> GET / HTTP/1.1
#> Host: example.com
#> User-Agent: httr2/0.1.1.9000 r-curl/4.3.2 libcurl/7.68.0
#> Accept: */*
#> Accept-Encoding: deflate, gzip, br
#> MyHeader: MyValue
#> 

# Repeated use overrides the previous value:
req %>%
  req_headers(MyHeader = "Old value") %>%
  req_headers(MyHeader = "New value") %>%
  req_dry_run()
#> GET / HTTP/1.1
#> Host: example.com
#> User-Agent: httr2/0.1.1.9000 r-curl/4.3.2 libcurl/7.68.0
#> Accept: */*
#> Accept-Encoding: deflate, gzip, br
#> MyHeader: New value
#> 

# Setting Accept to NULL uses curl's default:
req %>%
  req_headers(Accept = NULL) %>%
  req_dry_run()
#> GET / HTTP/1.1
#> Host: example.com
#> User-Agent: httr2/0.1.1.9000 r-curl/4.3.2 libcurl/7.68.0
#> Accept: */*
#> Accept-Encoding: deflate, gzip, br
#> 

# Setting it to "" removes it:
req %>%
  req_headers(Accept = "") %>%
  req_dry_run()
#> GET / HTTP/1.1
#> Host: example.com
#> User-Agent: httr2/0.1.1.9000 r-curl/4.3.2 libcurl/7.68.0
#> Accept-Encoding: deflate, gzip, br
#> 

# If you need to repeat a header, provide a vector of values
# (this is rarely needed, but is important in a handful of cases)
req %>%
  req_headers(HeaderName = c("Value 1", "Value 2", "Value 3")) %>%
  req_dry_run()
#> GET / HTTP/1.1
#> Host: example.com
#> User-Agent: httr2/0.1.1.9000 r-curl/4.3.2 libcurl/7.68.0
#> Accept: */*
#> Accept-Encoding: deflate, gzip, br
#> HeaderName: Value 1
#> HeaderName: Value 2
#> HeaderName: Value 3
#>