UNPKG

2.72 kBMarkdownView Raw
1# vary
2
3[![NPM Version][npm-image]][npm-url]
4[![NPM Downloads][downloads-image]][downloads-url]
5[![Node.js Version][node-version-image]][node-version-url]
6[![Build Status][travis-image]][travis-url]
7[![Test Coverage][coveralls-image]][coveralls-url]
8
9Manipulate the HTTP Vary header
10
11## Installation
12
13This is a [Node.js](https://nodejs.org/en/) module available through the
14[npm registry](https://www.npmjs.com/). Installation is done using the
15[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
16
17```sh
18$ npm install vary
19```
20
21## API
22
23<!-- eslint-disable no-unused-vars -->
24
25```js
26var vary = require('vary')
27```
28
29### vary(res, field)
30
31Adds the given header `field` to the `Vary` response header of `res`.
32This can be a string of a single field, a string of a valid `Vary`
33header, or an array of multiple fields.
34
35This will append the header if not already listed, otherwise leaves
36it listed in the current location.
37
38<!-- eslint-disable no-undef -->
39
40```js
41// Append "Origin" to the Vary header of the response
42vary(res, 'Origin')
43```
44
45### vary.append(header, field)
46
47Adds the given header `field` to the `Vary` response header string `header`.
48This can be a string of a single field, a string of a valid `Vary` header,
49or an array of multiple fields.
50
51This will append the header if not already listed, otherwise leaves
52it listed in the current location. The new header string is returned.
53
54<!-- eslint-disable no-undef -->
55
56```js
57// Get header string appending "Origin" to "Accept, User-Agent"
58vary.append('Accept, User-Agent', 'Origin')
59```
60
61## Examples
62
63### Updating the Vary header when content is based on it
64
65```js
66var http = require('http')
67var vary = require('vary')
68
69http.createServer(function onRequest (req, res) {
70 // about to user-agent sniff
71 vary(res, 'User-Agent')
72
73 var ua = req.headers['user-agent'] || ''
74 var isMobile = /mobi|android|touch|mini/i.test(ua)
75
76 // serve site, depending on isMobile
77 res.setHeader('Content-Type', 'text/html')
78 res.end('You are (probably) ' + (isMobile ? '' : 'not ') + 'a mobile user')
79})
80```
81
82## Testing
83
84```sh
85$ npm test
86```
87
88## License
89
90[MIT](LICENSE)
91
92[npm-image]: https://img.shields.io/npm/v/vary.svg
93[npm-url]: https://npmjs.org/package/vary
94[node-version-image]: https://img.shields.io/node/v/vary.svg
95[node-version-url]: https://nodejs.org/en/download
96[travis-image]: https://img.shields.io/travis/jshttp/vary/master.svg
97[travis-url]: https://travis-ci.org/jshttp/vary
98[coveralls-image]: https://img.shields.io/coveralls/jshttp/vary/master.svg
99[coveralls-url]: https://coveralls.io/r/jshttp/vary
100[downloads-image]: https://img.shields.io/npm/dm/vary.svg
101[downloads-url]: https://npmjs.org/package/vary