78 lines
1.9 KiB
Markdown
78 lines
1.9 KiB
Markdown
# es-vary
|
|
|
|
![Vulnerabilities][snyk-image]
|
|
[![Version][npm-v-image]][npm-url]
|
|
[![Node Version][node-version-image]][node-version-url]
|
|
|
|
> [`vary`](https://github.com/jshttp/vary) rewrite in TypeScript with ESM and CommonJS targets
|
|
|
|
Manipulate the HTTP Vary header
|
|
|
|
## Install
|
|
|
|
```sh
|
|
pnpm i es-vary
|
|
```
|
|
|
|
## API
|
|
|
|
```ts
|
|
import { vary, append } from 'es-vary'
|
|
```
|
|
|
|
### `vary(res, field)`
|
|
|
|
Adds the given header `field` to the `Vary` response header of `res`.
|
|
This can be a string of a single field, a string of a valid `Vary`
|
|
header, or an array of multiple fields.
|
|
|
|
This will append the header if not already listed, otherwise leaves
|
|
it listed in the current location.
|
|
|
|
```ts
|
|
vary(res, 'Origin')
|
|
```
|
|
|
|
### `append(header, field)`
|
|
|
|
Adds the given header `field` to the `Vary` response header string `header`.
|
|
This can be a string of a single field, a string of a valid `Vary` header,
|
|
or an array of multiple fields.
|
|
|
|
This will append the header if not already listed, otherwise leaves
|
|
it listed in the current location. The new header string is returned.
|
|
|
|
```ts
|
|
// Get header string appending "Origin" to "Accept, User-Agent"
|
|
append('Accept, User-Agent', 'Origin')
|
|
```
|
|
|
|
## Examples
|
|
|
|
```ts
|
|
import { createServer } from 'http'
|
|
import { vary } from 'es-vary'
|
|
|
|
createServer((req, res) => {
|
|
// about to user-agent sniff
|
|
vary(res, 'User-Agent')
|
|
|
|
const ua = req.headers['user-agent'] || ''
|
|
const isMobile = /mobi|android|touch|mini/i.test(ua)
|
|
|
|
// serve site, depending on isMobile
|
|
res.setHeader('Content-Type', 'text/html')
|
|
res.end('You are (probably) ' + (isMobile ? '' : 'not ') + 'a mobile user')
|
|
})
|
|
```
|
|
|
|
## License
|
|
|
|
MIT © [v1rtl](https://v1rtl.site)
|
|
|
|
[node-version-image]: https://img.shields.io/node/v/es-vary.svg?style=flat-square
|
|
[node-version-url]: https://nodejs.org
|
|
[snyk-image]: https://img.shields.io/snyk/vulnerabilities/npm/es-vary.svg?style=flat-square
|
|
[npm-v-image]: https://img.shields.io/npm/v/es-vary.svg?style=flat-square
|
|
[npm-url]: https://www.npmjs.com/package/es-vary
|