# referrer-typed

> Referrer middleware for Express.js with typings.

Latest version **1.0.4** (published 2018-04-28) · MIT license · 0 weekly downloads

> **Deprecated.** This package is deprecated.

## Install

```sh
npm install referrer-typed
pnpm add referrer-typed
yarn add referrer-typed
bun add referrer-typed
```

## Health

**Score 10/100 (F)** — status: deprecated.

Negative: deprecated.

## Facts

| | |
|---|---|
| Version | 1.0.4 |
| Published | 2018-04-28 |
| First published | 2017-09-08 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 3 |
| Unpacked size | 7.1 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | info@coderslagoon.com |
| Maintainers | coderslagoon |

## Links

- npm: https://www.npmjs.com/package/referrer-typed
- Repository: https://github.com/coderslagoon/referred-typed
- Homepage: https://github.com/coderslagoon/referred-typed#readme
- Issues: https://github.com/coderslagoon/referred-typed/issues
- npm.io page: https://npm.io/package/referrer-typed

## Dependencies (3)

- [express](https://npm.io/package/express.md) ^4.16.2
- [http-status](https://npm.io/package/http-status.md) ^1.0.1
- [http-header-fields-typed](https://npm.io/package/http-header-fields-typed.md) ^1.2.3

## Recent versions

- 1.0.4 (latest) — 2018-04-28
- 1.0.3 — 2017-12-25
- 1.0.2 — 2017-12-24
- 1.0.1 — 2017-09-08
- 1.0.0 — 2017-09-08

## README

# referrer-typed

Express middleware to redirect on certain [Referer](https://en.wikipedia.org/wiki/HTTP_referer) header fields.

Useful for example to avoid direct download linking from third party sites.

Comes with typings (for [TypeScript](https://www.typescriptlang.org/)).

## Installation

### npm
`npm install referrer-typed`

### yarn
`yarn add referrer-typed`

## Examples

Notice that the module is written in TypeScript and transpiled down to ES5.

### JavaScript

Here we are going to shield our download route with a referrer protection:
```
var Referrer = require('referrer-typed').Referrer;

var config = {
  allowNoReferrer: true,
  redirectTo: '/',
  regexExclude: /http:\/\/test.org\/.*/
};

var referrer = new Referrer(config);
app.get('/download/*', referrer.check.bind(referrer));
```
The configuration is set to allow missing `Referer` headers fields (optional, default is `false`),
something you probably don't want to permit as a matter of fact.
It will redirect to the root of the website defined by `redirectTo`. Referrer fields
matching the regular expression in `regexExclude` will cause a redirect, everything
will be passed to the next handler. 

Probably more common are inclusive restrictions:
```
var Referrer = require('referrer-typed').Referrer;

var config = {
  redirectTo: '/index.html',
  regexInclude: [ /yes.com/, /ok/ ],
  onRedirect: function(req, referrer) {
   console.log('redirected', req.ip, 'because of', referrer); 
  }
};

var referrer = new Referrer(config);
app.get('/download/*', referrer.check.bind(referrer));
```
Here any referrer carrying `yes.com` or `ok` will be let through. Everything else
gets directed to `/index.html`. We also add a callback in `onRedirect` to log the
request and the extracted referrer in case we do redirect.

This covers all of the configuration fields.

### TypeScript

If you use TypeScript please check out the `IReferrerConfig` interface for further information.

---
_Source: https://npm.io/package/referrer-typed · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
