/push/:messageid/:message/:title
Pushbenachrichtigungen können zuverlässig über diese route gesendet werden Für abstände muss %20 verwendet werden
This commit is contained in:
		@@ -2,7 +2,7 @@ var createError = require('http-errors');
 | 
			
		||||
var express = require('express');
 | 
			
		||||
var path = require('path');
 | 
			
		||||
var logger = require('morgan');
 | 
			
		||||
var cors = reqire('cors');
 | 
			
		||||
var cors = require('cors');
 | 
			
		||||
 | 
			
		||||
var indexRouter = require('./routes/index');
 | 
			
		||||
var usersRouter = require('./routes/users');
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										33
									
								
								express-server/node_modules/cors/CONTRIBUTING.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										33
									
								
								express-server/node_modules/cors/CONTRIBUTING.md
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,33 +0,0 @@
 | 
			
		||||
# contributing to `cors`
 | 
			
		||||
 | 
			
		||||
CORS is a node.js package for providing a [connect](http://www.senchalabs.org/connect/)/[express](http://expressjs.com/) middleware that can be used to enable [CORS](http://en.wikipedia.org/wiki/Cross-origin_resource_sharing) with various options. Learn more about the project in [the README](README.md).
 | 
			
		||||
 | 
			
		||||
## The CORS Spec
 | 
			
		||||
 | 
			
		||||
[http://www.w3.org/TR/cors/](http://www.w3.org/TR/cors/)
 | 
			
		||||
 | 
			
		||||
## Pull Requests Welcome
 | 
			
		||||
 | 
			
		||||
* Include `'use strict';` in every javascript file.
 | 
			
		||||
* 2 space indentation.
 | 
			
		||||
* Please run the testing steps below before submitting.
 | 
			
		||||
 | 
			
		||||
## Testing
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
$ npm install
 | 
			
		||||
$ npm test
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Interactive Testing Harness
 | 
			
		||||
 | 
			
		||||
[http://node-cors-client.herokuapp.com](http://node-cors-client.herokuapp.com)
 | 
			
		||||
 | 
			
		||||
Related git repositories:
 | 
			
		||||
 | 
			
		||||
* [https://github.com/TroyGoode/node-cors-server](https://github.com/TroyGoode/node-cors-server)
 | 
			
		||||
* [https://github.com/TroyGoode/node-cors-client](https://github.com/TroyGoode/node-cors-client)
 | 
			
		||||
 | 
			
		||||
## License
 | 
			
		||||
 | 
			
		||||
[MIT License](http://www.opensource.org/licenses/mit-license.php)
 | 
			
		||||
							
								
								
									
										58
									
								
								express-server/node_modules/cors/HISTORY.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										58
									
								
								express-server/node_modules/cors/HISTORY.md
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,58 +0,0 @@
 | 
			
		||||
2.8.5 / 2018-11-04
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * Fix setting `maxAge` option to `0`
 | 
			
		||||
 | 
			
		||||
2.8.4 / 2017-07-12
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * Work-around Safari bug in default pre-flight response
 | 
			
		||||
 | 
			
		||||
2.8.3 / 2017-03-29
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * Fix error when options delegate missing `methods` option
 | 
			
		||||
 | 
			
		||||
2.8.2 / 2017-03-28
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * Fix error when frozen options are passed
 | 
			
		||||
  * Send "Vary: Origin" when using regular expressions
 | 
			
		||||
  * Send "Vary: Access-Control-Request-Headers" when dynamic `allowedHeaders`
 | 
			
		||||
 | 
			
		||||
2.8.1 / 2016-09-08
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
This release only changed documentation.
 | 
			
		||||
 | 
			
		||||
2.8.0 / 2016-08-23
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * Add `optionsSuccessStatus` option
 | 
			
		||||
 | 
			
		||||
2.7.2 / 2016-08-23
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * Fix error when Node.js running in strict mode
 | 
			
		||||
 | 
			
		||||
2.7.1 / 2015-05-28
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * Move module into expressjs organization
 | 
			
		||||
 | 
			
		||||
2.7.0 / 2015-05-28
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * Allow array of matching condition as `origin` option
 | 
			
		||||
  * Allow regular expression as `origin` option
 | 
			
		||||
 | 
			
		||||
2.6.1 / 2015-05-28
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * Update `license` in package.json
 | 
			
		||||
 | 
			
		||||
2.6.0 / 2015-04-27
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * Add `preflightContinue` option
 | 
			
		||||
  * Fix "Vary: Origin" header added for "*"
 | 
			
		||||
							
								
								
									
										22
									
								
								express-server/node_modules/cors/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								express-server/node_modules/cors/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,22 +0,0 @@
 | 
			
		||||
(The MIT License)
 | 
			
		||||
 | 
			
		||||
Copyright (c) 2013 Troy Goode <troygoode@gmail.com>
 | 
			
		||||
 | 
			
		||||
Permission is hereby granted, free of charge, to any person obtaining
 | 
			
		||||
a copy of this software and associated documentation files (the
 | 
			
		||||
'Software'), to deal in the Software without restriction, including
 | 
			
		||||
without limitation the rights to use, copy, modify, merge, publish,
 | 
			
		||||
distribute, sublicense, and/or sell copies of the Software, and to
 | 
			
		||||
permit persons to whom the Software is furnished to do so, subject to
 | 
			
		||||
the following conditions:
 | 
			
		||||
 | 
			
		||||
The above copyright notice and this permission notice shall be
 | 
			
		||||
included in all copies or substantial portions of the Software.
 | 
			
		||||
 | 
			
		||||
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
 | 
			
		||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 | 
			
		||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 | 
			
		||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 | 
			
		||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 | 
			
		||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 | 
			
		||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
							
								
								
									
										243
									
								
								express-server/node_modules/cors/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										243
									
								
								express-server/node_modules/cors/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,243 +0,0 @@
 | 
			
		||||
# cors
 | 
			
		||||
 | 
			
		||||
[![NPM Version][npm-image]][npm-url]
 | 
			
		||||
[![NPM Downloads][downloads-image]][downloads-url]
 | 
			
		||||
[![Build Status][travis-image]][travis-url]
 | 
			
		||||
[![Test Coverage][coveralls-image]][coveralls-url]
 | 
			
		||||
 | 
			
		||||
CORS is a node.js package for providing a [Connect](http://www.senchalabs.org/connect/)/[Express](http://expressjs.com/) middleware that can be used to enable [CORS](http://en.wikipedia.org/wiki/Cross-origin_resource_sharing) with various options.
 | 
			
		||||
 | 
			
		||||
**[Follow me (@troygoode) on Twitter!](https://twitter.com/intent/user?screen_name=troygoode)**
 | 
			
		||||
 | 
			
		||||
* [Installation](#installation)
 | 
			
		||||
* [Usage](#usage)
 | 
			
		||||
  * [Simple Usage](#simple-usage-enable-all-cors-requests)
 | 
			
		||||
  * [Enable CORS for a Single Route](#enable-cors-for-a-single-route)
 | 
			
		||||
  * [Configuring CORS](#configuring-cors)
 | 
			
		||||
  * [Configuring CORS Asynchronously](#configuring-cors-asynchronously)
 | 
			
		||||
  * [Enabling CORS Pre-Flight](#enabling-cors-pre-flight)
 | 
			
		||||
* [Configuration Options](#configuration-options)
 | 
			
		||||
* [Demo](#demo)
 | 
			
		||||
* [License](#license)
 | 
			
		||||
* [Author](#author)
 | 
			
		||||
 | 
			
		||||
## Installation
 | 
			
		||||
 | 
			
		||||
This is a [Node.js](https://nodejs.org/en/) module available through the
 | 
			
		||||
[npm registry](https://www.npmjs.com/). Installation is done using the
 | 
			
		||||
[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
 | 
			
		||||
 | 
			
		||||
```sh
 | 
			
		||||
$ npm install cors
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Usage
 | 
			
		||||
 | 
			
		||||
### Simple Usage (Enable *All* CORS Requests)
 | 
			
		||||
 | 
			
		||||
```javascript
 | 
			
		||||
var express = require('express')
 | 
			
		||||
var cors = require('cors')
 | 
			
		||||
var app = express()
 | 
			
		||||
 | 
			
		||||
app.use(cors())
 | 
			
		||||
 | 
			
		||||
app.get('/products/:id', function (req, res, next) {
 | 
			
		||||
  res.json({msg: 'This is CORS-enabled for all origins!'})
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
app.listen(80, function () {
 | 
			
		||||
  console.log('CORS-enabled web server listening on port 80')
 | 
			
		||||
})
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Enable CORS for a Single Route
 | 
			
		||||
 | 
			
		||||
```javascript
 | 
			
		||||
var express = require('express')
 | 
			
		||||
var cors = require('cors')
 | 
			
		||||
var app = express()
 | 
			
		||||
 | 
			
		||||
app.get('/products/:id', cors(), function (req, res, next) {
 | 
			
		||||
  res.json({msg: 'This is CORS-enabled for a Single Route'})
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
app.listen(80, function () {
 | 
			
		||||
  console.log('CORS-enabled web server listening on port 80')
 | 
			
		||||
})
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Configuring CORS
 | 
			
		||||
 | 
			
		||||
```javascript
 | 
			
		||||
var express = require('express')
 | 
			
		||||
var cors = require('cors')
 | 
			
		||||
var app = express()
 | 
			
		||||
 | 
			
		||||
var corsOptions = {
 | 
			
		||||
  origin: 'http://example.com',
 | 
			
		||||
  optionsSuccessStatus: 200 // some legacy browsers (IE11, various SmartTVs) choke on 204
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
app.get('/products/:id', cors(corsOptions), function (req, res, next) {
 | 
			
		||||
  res.json({msg: 'This is CORS-enabled for only example.com.'})
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
app.listen(80, function () {
 | 
			
		||||
  console.log('CORS-enabled web server listening on port 80')
 | 
			
		||||
})
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Configuring CORS w/ Dynamic Origin
 | 
			
		||||
 | 
			
		||||
```javascript
 | 
			
		||||
var express = require('express')
 | 
			
		||||
var cors = require('cors')
 | 
			
		||||
var app = express()
 | 
			
		||||
 | 
			
		||||
var whitelist = ['http://example1.com', 'http://example2.com']
 | 
			
		||||
var corsOptions = {
 | 
			
		||||
  origin: function (origin, callback) {
 | 
			
		||||
    if (whitelist.indexOf(origin) !== -1) {
 | 
			
		||||
      callback(null, true)
 | 
			
		||||
    } else {
 | 
			
		||||
      callback(new Error('Not allowed by CORS'))
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
app.get('/products/:id', cors(corsOptions), function (req, res, next) {
 | 
			
		||||
  res.json({msg: 'This is CORS-enabled for a whitelisted domain.'})
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
app.listen(80, function () {
 | 
			
		||||
  console.log('CORS-enabled web server listening on port 80')
 | 
			
		||||
})
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
If you do not want to block REST tools or server-to-server requests,
 | 
			
		||||
add a `!origin` check in the origin function like so:
 | 
			
		||||
 | 
			
		||||
```javascript
 | 
			
		||||
var corsOptions = {
 | 
			
		||||
  origin: function (origin, callback) {
 | 
			
		||||
    if (whitelist.indexOf(origin) !== -1 || !origin) {
 | 
			
		||||
      callback(null, true)
 | 
			
		||||
    } else {
 | 
			
		||||
      callback(new Error('Not allowed by CORS'))
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Enabling CORS Pre-Flight
 | 
			
		||||
 | 
			
		||||
Certain CORS requests are considered 'complex' and require an initial
 | 
			
		||||
`OPTIONS` request (called the "pre-flight request"). An example of a
 | 
			
		||||
'complex' CORS request is one that uses an HTTP verb other than
 | 
			
		||||
GET/HEAD/POST (such as DELETE) or that uses custom headers. To enable
 | 
			
		||||
pre-flighting, you must add a new OPTIONS handler for the route you want
 | 
			
		||||
to support:
 | 
			
		||||
 | 
			
		||||
```javascript
 | 
			
		||||
var express = require('express')
 | 
			
		||||
var cors = require('cors')
 | 
			
		||||
var app = express()
 | 
			
		||||
 | 
			
		||||
app.options('/products/:id', cors()) // enable pre-flight request for DELETE request
 | 
			
		||||
app.del('/products/:id', cors(), function (req, res, next) {
 | 
			
		||||
  res.json({msg: 'This is CORS-enabled for all origins!'})
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
app.listen(80, function () {
 | 
			
		||||
  console.log('CORS-enabled web server listening on port 80')
 | 
			
		||||
})
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
You can also enable pre-flight across-the-board like so:
 | 
			
		||||
 | 
			
		||||
```javascript
 | 
			
		||||
app.options('*', cors()) // include before other routes
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Configuring CORS Asynchronously
 | 
			
		||||
 | 
			
		||||
```javascript
 | 
			
		||||
var express = require('express')
 | 
			
		||||
var cors = require('cors')
 | 
			
		||||
var app = express()
 | 
			
		||||
 | 
			
		||||
var whitelist = ['http://example1.com', 'http://example2.com']
 | 
			
		||||
var corsOptionsDelegate = function (req, callback) {
 | 
			
		||||
  var corsOptions;
 | 
			
		||||
  if (whitelist.indexOf(req.header('Origin')) !== -1) {
 | 
			
		||||
    corsOptions = { origin: true } // reflect (enable) the requested origin in the CORS response
 | 
			
		||||
  } else {
 | 
			
		||||
    corsOptions = { origin: false } // disable CORS for this request
 | 
			
		||||
  }
 | 
			
		||||
  callback(null, corsOptions) // callback expects two parameters: error and options
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
app.get('/products/:id', cors(corsOptionsDelegate), function (req, res, next) {
 | 
			
		||||
  res.json({msg: 'This is CORS-enabled for a whitelisted domain.'})
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
app.listen(80, function () {
 | 
			
		||||
  console.log('CORS-enabled web server listening on port 80')
 | 
			
		||||
})
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Configuration Options
 | 
			
		||||
 | 
			
		||||
* `origin`: Configures the **Access-Control-Allow-Origin** CORS header. Possible values:
 | 
			
		||||
  - `Boolean` - set `origin` to `true` to reflect the [request origin](http://tools.ietf.org/html/draft-abarth-origin-09), as defined by `req.header('Origin')`, or set it to `false` to disable CORS.
 | 
			
		||||
  - `String` - set `origin` to a specific origin. For example if you set it to `"http://example.com"` only requests from "http://example.com" will be allowed.
 | 
			
		||||
  - `RegExp` - set `origin` to a regular expression pattern which will be used to test the request origin. If it's a match, the request origin will be reflected. For example the pattern `/example\.com$/` will reflect any request that is coming from an origin ending with "example.com".
 | 
			
		||||
  - `Array` - set `origin` to an array of valid origins. Each origin can be a `String` or a `RegExp`. For example `["http://example1.com", /\.example2\.com$/]` will accept any request from "http://example1.com" or from a subdomain of "example2.com".
 | 
			
		||||
  - `Function` - set `origin` to a function implementing some custom logic. The function takes the request origin as the first parameter and a callback (which expects the signature `err [object], allow [bool]`) as the second.
 | 
			
		||||
* `methods`: Configures the **Access-Control-Allow-Methods** CORS header. Expects a comma-delimited string (ex: 'GET,PUT,POST') or an array (ex: `['GET', 'PUT', 'POST']`).
 | 
			
		||||
* `allowedHeaders`: Configures the **Access-Control-Allow-Headers** CORS header. Expects a comma-delimited string (ex: 'Content-Type,Authorization') or an array (ex: `['Content-Type', 'Authorization']`). If not specified, defaults to reflecting the headers specified in the request's **Access-Control-Request-Headers** header.
 | 
			
		||||
* `exposedHeaders`: Configures the **Access-Control-Expose-Headers** CORS header. Expects a comma-delimited string (ex: 'Content-Range,X-Content-Range') or an array (ex: `['Content-Range', 'X-Content-Range']`). If not specified, no custom headers are exposed.
 | 
			
		||||
* `credentials`: Configures the **Access-Control-Allow-Credentials** CORS header. Set to `true` to pass the header, otherwise it is omitted.
 | 
			
		||||
* `maxAge`: Configures the **Access-Control-Max-Age** CORS header. Set to an integer to pass the header, otherwise it is omitted.
 | 
			
		||||
* `preflightContinue`: Pass the CORS preflight response to the next handler.
 | 
			
		||||
* `optionsSuccessStatus`: Provides a status code to use for successful `OPTIONS` requests, since some legacy browsers (IE11, various SmartTVs) choke on `204`.
 | 
			
		||||
 | 
			
		||||
The default configuration is the equivalent of:
 | 
			
		||||
 | 
			
		||||
```json
 | 
			
		||||
{
 | 
			
		||||
  "origin": "*",
 | 
			
		||||
  "methods": "GET,HEAD,PUT,PATCH,POST,DELETE",
 | 
			
		||||
  "preflightContinue": false,
 | 
			
		||||
  "optionsSuccessStatus": 204
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
For details on the effect of each CORS header, read [this](http://www.html5rocks.com/en/tutorials/cors/) article on HTML5 Rocks.
 | 
			
		||||
 | 
			
		||||
## Demo
 | 
			
		||||
 | 
			
		||||
A demo that illustrates CORS working (and not working) using jQuery is available here: [http://node-cors-client.herokuapp.com/](http://node-cors-client.herokuapp.com/)
 | 
			
		||||
 | 
			
		||||
Code for that demo can be found here:
 | 
			
		||||
 | 
			
		||||
* Client: [https://github.com/TroyGoode/node-cors-client](https://github.com/TroyGoode/node-cors-client)
 | 
			
		||||
* Server: [https://github.com/TroyGoode/node-cors-server](https://github.com/TroyGoode/node-cors-server)
 | 
			
		||||
 | 
			
		||||
## License
 | 
			
		||||
 | 
			
		||||
[MIT License](http://www.opensource.org/licenses/mit-license.php)
 | 
			
		||||
 | 
			
		||||
## Author
 | 
			
		||||
 | 
			
		||||
[Troy Goode](https://github.com/TroyGoode) ([troygoode@gmail.com](mailto:troygoode@gmail.com))
 | 
			
		||||
 | 
			
		||||
[coveralls-image]: https://img.shields.io/coveralls/expressjs/cors/master.svg
 | 
			
		||||
[coveralls-url]: https://coveralls.io/r/expressjs/cors?branch=master
 | 
			
		||||
[downloads-image]: https://img.shields.io/npm/dm/cors.svg
 | 
			
		||||
[downloads-url]: https://npmjs.org/package/cors
 | 
			
		||||
[npm-image]: https://img.shields.io/npm/v/cors.svg
 | 
			
		||||
[npm-url]: https://npmjs.org/package/cors
 | 
			
		||||
[travis-image]: https://img.shields.io/travis/expressjs/cors/master.svg
 | 
			
		||||
[travis-url]: https://travis-ci.org/expressjs/cors
 | 
			
		||||
							
								
								
									
										238
									
								
								express-server/node_modules/cors/lib/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										238
									
								
								express-server/node_modules/cors/lib/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,238 +0,0 @@
 | 
			
		||||
(function () {
 | 
			
		||||
 | 
			
		||||
  'use strict';
 | 
			
		||||
 | 
			
		||||
  var assign = require('object-assign');
 | 
			
		||||
  var vary = require('vary');
 | 
			
		||||
 | 
			
		||||
  var defaults = {
 | 
			
		||||
    origin: '*',
 | 
			
		||||
    methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',
 | 
			
		||||
    preflightContinue: false,
 | 
			
		||||
    optionsSuccessStatus: 204
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  function isString(s) {
 | 
			
		||||
    return typeof s === 'string' || s instanceof String;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function isOriginAllowed(origin, allowedOrigin) {
 | 
			
		||||
    if (Array.isArray(allowedOrigin)) {
 | 
			
		||||
      for (var i = 0; i < allowedOrigin.length; ++i) {
 | 
			
		||||
        if (isOriginAllowed(origin, allowedOrigin[i])) {
 | 
			
		||||
          return true;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
    } else if (isString(allowedOrigin)) {
 | 
			
		||||
      return origin === allowedOrigin;
 | 
			
		||||
    } else if (allowedOrigin instanceof RegExp) {
 | 
			
		||||
      return allowedOrigin.test(origin);
 | 
			
		||||
    } else {
 | 
			
		||||
      return !!allowedOrigin;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function configureOrigin(options, req) {
 | 
			
		||||
    var requestOrigin = req.headers.origin,
 | 
			
		||||
      headers = [],
 | 
			
		||||
      isAllowed;
 | 
			
		||||
 | 
			
		||||
    if (!options.origin || options.origin === '*') {
 | 
			
		||||
      // allow any origin
 | 
			
		||||
      headers.push([{
 | 
			
		||||
        key: 'Access-Control-Allow-Origin',
 | 
			
		||||
        value: '*'
 | 
			
		||||
      }]);
 | 
			
		||||
    } else if (isString(options.origin)) {
 | 
			
		||||
      // fixed origin
 | 
			
		||||
      headers.push([{
 | 
			
		||||
        key: 'Access-Control-Allow-Origin',
 | 
			
		||||
        value: options.origin
 | 
			
		||||
      }]);
 | 
			
		||||
      headers.push([{
 | 
			
		||||
        key: 'Vary',
 | 
			
		||||
        value: 'Origin'
 | 
			
		||||
      }]);
 | 
			
		||||
    } else {
 | 
			
		||||
      isAllowed = isOriginAllowed(requestOrigin, options.origin);
 | 
			
		||||
      // reflect origin
 | 
			
		||||
      headers.push([{
 | 
			
		||||
        key: 'Access-Control-Allow-Origin',
 | 
			
		||||
        value: isAllowed ? requestOrigin : false
 | 
			
		||||
      }]);
 | 
			
		||||
      headers.push([{
 | 
			
		||||
        key: 'Vary',
 | 
			
		||||
        value: 'Origin'
 | 
			
		||||
      }]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return headers;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function configureMethods(options) {
 | 
			
		||||
    var methods = options.methods;
 | 
			
		||||
    if (methods.join) {
 | 
			
		||||
      methods = options.methods.join(','); // .methods is an array, so turn it into a string
 | 
			
		||||
    }
 | 
			
		||||
    return {
 | 
			
		||||
      key: 'Access-Control-Allow-Methods',
 | 
			
		||||
      value: methods
 | 
			
		||||
    };
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function configureCredentials(options) {
 | 
			
		||||
    if (options.credentials === true) {
 | 
			
		||||
      return {
 | 
			
		||||
        key: 'Access-Control-Allow-Credentials',
 | 
			
		||||
        value: 'true'
 | 
			
		||||
      };
 | 
			
		||||
    }
 | 
			
		||||
    return null;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function configureAllowedHeaders(options, req) {
 | 
			
		||||
    var allowedHeaders = options.allowedHeaders || options.headers;
 | 
			
		||||
    var headers = [];
 | 
			
		||||
 | 
			
		||||
    if (!allowedHeaders) {
 | 
			
		||||
      allowedHeaders = req.headers['access-control-request-headers']; // .headers wasn't specified, so reflect the request headers
 | 
			
		||||
      headers.push([{
 | 
			
		||||
        key: 'Vary',
 | 
			
		||||
        value: 'Access-Control-Request-Headers'
 | 
			
		||||
      }]);
 | 
			
		||||
    } else if (allowedHeaders.join) {
 | 
			
		||||
      allowedHeaders = allowedHeaders.join(','); // .headers is an array, so turn it into a string
 | 
			
		||||
    }
 | 
			
		||||
    if (allowedHeaders && allowedHeaders.length) {
 | 
			
		||||
      headers.push([{
 | 
			
		||||
        key: 'Access-Control-Allow-Headers',
 | 
			
		||||
        value: allowedHeaders
 | 
			
		||||
      }]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return headers;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function configureExposedHeaders(options) {
 | 
			
		||||
    var headers = options.exposedHeaders;
 | 
			
		||||
    if (!headers) {
 | 
			
		||||
      return null;
 | 
			
		||||
    } else if (headers.join) {
 | 
			
		||||
      headers = headers.join(','); // .headers is an array, so turn it into a string
 | 
			
		||||
    }
 | 
			
		||||
    if (headers && headers.length) {
 | 
			
		||||
      return {
 | 
			
		||||
        key: 'Access-Control-Expose-Headers',
 | 
			
		||||
        value: headers
 | 
			
		||||
      };
 | 
			
		||||
    }
 | 
			
		||||
    return null;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function configureMaxAge(options) {
 | 
			
		||||
    var maxAge = (typeof options.maxAge === 'number' || options.maxAge) && options.maxAge.toString()
 | 
			
		||||
    if (maxAge && maxAge.length) {
 | 
			
		||||
      return {
 | 
			
		||||
        key: 'Access-Control-Max-Age',
 | 
			
		||||
        value: maxAge
 | 
			
		||||
      };
 | 
			
		||||
    }
 | 
			
		||||
    return null;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function applyHeaders(headers, res) {
 | 
			
		||||
    for (var i = 0, n = headers.length; i < n; i++) {
 | 
			
		||||
      var header = headers[i];
 | 
			
		||||
      if (header) {
 | 
			
		||||
        if (Array.isArray(header)) {
 | 
			
		||||
          applyHeaders(header, res);
 | 
			
		||||
        } else if (header.key === 'Vary' && header.value) {
 | 
			
		||||
          vary(res, header.value);
 | 
			
		||||
        } else if (header.value) {
 | 
			
		||||
          res.setHeader(header.key, header.value);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function cors(options, req, res, next) {
 | 
			
		||||
    var headers = [],
 | 
			
		||||
      method = req.method && req.method.toUpperCase && req.method.toUpperCase();
 | 
			
		||||
 | 
			
		||||
    if (method === 'OPTIONS') {
 | 
			
		||||
      // preflight
 | 
			
		||||
      headers.push(configureOrigin(options, req));
 | 
			
		||||
      headers.push(configureCredentials(options, req));
 | 
			
		||||
      headers.push(configureMethods(options, req));
 | 
			
		||||
      headers.push(configureAllowedHeaders(options, req));
 | 
			
		||||
      headers.push(configureMaxAge(options, req));
 | 
			
		||||
      headers.push(configureExposedHeaders(options, req));
 | 
			
		||||
      applyHeaders(headers, res);
 | 
			
		||||
 | 
			
		||||
      if (options.preflightContinue) {
 | 
			
		||||
        next();
 | 
			
		||||
      } else {
 | 
			
		||||
        // Safari (and potentially other browsers) need content-length 0,
 | 
			
		||||
        //   for 204 or they just hang waiting for a body
 | 
			
		||||
        res.statusCode = options.optionsSuccessStatus;
 | 
			
		||||
        res.setHeader('Content-Length', '0');
 | 
			
		||||
        res.end();
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      // actual response
 | 
			
		||||
      headers.push(configureOrigin(options, req));
 | 
			
		||||
      headers.push(configureCredentials(options, req));
 | 
			
		||||
      headers.push(configureExposedHeaders(options, req));
 | 
			
		||||
      applyHeaders(headers, res);
 | 
			
		||||
      next();
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function middlewareWrapper(o) {
 | 
			
		||||
    // if options are static (either via defaults or custom options passed in), wrap in a function
 | 
			
		||||
    var optionsCallback = null;
 | 
			
		||||
    if (typeof o === 'function') {
 | 
			
		||||
      optionsCallback = o;
 | 
			
		||||
    } else {
 | 
			
		||||
      optionsCallback = function (req, cb) {
 | 
			
		||||
        cb(null, o);
 | 
			
		||||
      };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return function corsMiddleware(req, res, next) {
 | 
			
		||||
      optionsCallback(req, function (err, options) {
 | 
			
		||||
        if (err) {
 | 
			
		||||
          next(err);
 | 
			
		||||
        } else {
 | 
			
		||||
          var corsOptions = assign({}, defaults, options);
 | 
			
		||||
          var originCallback = null;
 | 
			
		||||
          if (corsOptions.origin && typeof corsOptions.origin === 'function') {
 | 
			
		||||
            originCallback = corsOptions.origin;
 | 
			
		||||
          } else if (corsOptions.origin) {
 | 
			
		||||
            originCallback = function (origin, cb) {
 | 
			
		||||
              cb(null, corsOptions.origin);
 | 
			
		||||
            };
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          if (originCallback) {
 | 
			
		||||
            originCallback(req.headers.origin, function (err2, origin) {
 | 
			
		||||
              if (err2 || !origin) {
 | 
			
		||||
                next(err2);
 | 
			
		||||
              } else {
 | 
			
		||||
                corsOptions.origin = origin;
 | 
			
		||||
                cors(corsOptions, req, res, next);
 | 
			
		||||
              }
 | 
			
		||||
            });
 | 
			
		||||
          } else {
 | 
			
		||||
            next();
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    };
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // can pass either an options hash, an options delegate, or nothing
 | 
			
		||||
  module.exports = middlewareWrapper;
 | 
			
		||||
 | 
			
		||||
}());
 | 
			
		||||
							
								
								
									
										78
									
								
								express-server/node_modules/cors/package.json
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										78
									
								
								express-server/node_modules/cors/package.json
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,78 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "_from": "cors",
 | 
			
		||||
  "_id": "cors@2.8.5",
 | 
			
		||||
  "_inBundle": false,
 | 
			
		||||
  "_integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
 | 
			
		||||
  "_location": "/cors",
 | 
			
		||||
  "_phantomChildren": {},
 | 
			
		||||
  "_requested": {
 | 
			
		||||
    "type": "tag",
 | 
			
		||||
    "registry": true,
 | 
			
		||||
    "raw": "cors",
 | 
			
		||||
    "name": "cors",
 | 
			
		||||
    "escapedName": "cors",
 | 
			
		||||
    "rawSpec": "",
 | 
			
		||||
    "saveSpec": null,
 | 
			
		||||
    "fetchSpec": "latest"
 | 
			
		||||
  },
 | 
			
		||||
  "_requiredBy": [
 | 
			
		||||
    "#USER",
 | 
			
		||||
    "/"
 | 
			
		||||
  ],
 | 
			
		||||
  "_resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
 | 
			
		||||
  "_shasum": "eac11da51592dd86b9f06f6e7ac293b3df875d29",
 | 
			
		||||
  "_spec": "cors",
 | 
			
		||||
  "_where": "D:\\Desktop\\Git\\SmartShopper\\express-server",
 | 
			
		||||
  "author": {
 | 
			
		||||
    "name": "Troy Goode",
 | 
			
		||||
    "email": "troygoode@gmail.com",
 | 
			
		||||
    "url": "https://github.com/troygoode/"
 | 
			
		||||
  },
 | 
			
		||||
  "bugs": {
 | 
			
		||||
    "url": "https://github.com/expressjs/cors/issues"
 | 
			
		||||
  },
 | 
			
		||||
  "bundleDependencies": false,
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "object-assign": "^4",
 | 
			
		||||
    "vary": "^1"
 | 
			
		||||
  },
 | 
			
		||||
  "deprecated": false,
 | 
			
		||||
  "description": "Node.js CORS middleware",
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "after": "0.8.2",
 | 
			
		||||
    "eslint": "2.13.1",
 | 
			
		||||
    "express": "4.16.3",
 | 
			
		||||
    "mocha": "5.2.0",
 | 
			
		||||
    "nyc": "13.1.0",
 | 
			
		||||
    "supertest": "3.3.0"
 | 
			
		||||
  },
 | 
			
		||||
  "engines": {
 | 
			
		||||
    "node": ">= 0.10"
 | 
			
		||||
  },
 | 
			
		||||
  "files": [
 | 
			
		||||
    "lib/index.js",
 | 
			
		||||
    "CONTRIBUTING.md",
 | 
			
		||||
    "HISTORY.md",
 | 
			
		||||
    "LICENSE",
 | 
			
		||||
    "README.md"
 | 
			
		||||
  ],
 | 
			
		||||
  "homepage": "https://github.com/expressjs/cors#readme",
 | 
			
		||||
  "keywords": [
 | 
			
		||||
    "cors",
 | 
			
		||||
    "express",
 | 
			
		||||
    "connect",
 | 
			
		||||
    "middleware"
 | 
			
		||||
  ],
 | 
			
		||||
  "license": "MIT",
 | 
			
		||||
  "main": "./lib/index.js",
 | 
			
		||||
  "name": "cors",
 | 
			
		||||
  "repository": {
 | 
			
		||||
    "type": "git",
 | 
			
		||||
    "url": "git+https://github.com/expressjs/cors.git"
 | 
			
		||||
  },
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "lint": "eslint lib test",
 | 
			
		||||
    "test": "npm run lint && nyc --reporter=html --reporter=text mocha --require test/support/env"
 | 
			
		||||
  },
 | 
			
		||||
  "version": "2.8.5"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								express-server/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										9
									
								
								express-server/package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -1276,15 +1276,6 @@
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
 | 
			
		||||
      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
 | 
			
		||||
    },
 | 
			
		||||
    "cors": {
 | 
			
		||||
      "version": "2.8.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
 | 
			
		||||
      "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "object-assign": "^4",
 | 
			
		||||
        "vary": "^1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "create-error-class": {
 | 
			
		||||
      "version": "3.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,6 @@
 | 
			
		||||
  },
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "axios": "^0.18.0",
 | 
			
		||||
    "cors": "^2.8.5",
 | 
			
		||||
    "debug": "~2.6.9",
 | 
			
		||||
    "ejs": "~2.5.7",
 | 
			
		||||
    "express": "^4.16.4",
 | 
			
		||||
 
 | 
			
		||||
@@ -46,5 +46,5 @@ function updateUser(token) {
 | 
			
		||||
 | 
			
		||||
msg.onMessage(payload => {
 | 
			
		||||
    const title = payload.data.title
 | 
			
		||||
    new Notification(title, { body: payload.data.text});
 | 
			
		||||
    new Notification(title, { body: payload.data.body});
 | 
			
		||||
  })
 | 
			
		||||
@@ -50,9 +50,10 @@ function sendPush(msgtoken, title, text){
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//Push
 | 
			
		||||
router.get('/push/:msgtoken', function (req, res, next) {
 | 
			
		||||
    sendPush(req.params.msgtoken, "Update", "Einkaufsliste wurde geändert");
 | 
			
		||||
    res.status(200).send(req.params.msgtoken);
 | 
			
		||||
router.get('/push/:msgtoken/:message/:title', function (req, res, next) {
 | 
			
		||||
    sendPush(req.params.msgtoken, req.params.title, req.params.message);
 | 
			
		||||
    var sender = "Message Token: " + req.params.msgtoken + " Message: " + req.params.message + " Title: " + req.params.title;
 | 
			
		||||
    res.status(200).send(sender);
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user