| 
									
										
										
										
											2017-10-10 11:15:24 +02:00
										 |  |  | # Configuration
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | While Strapi dutifully adheres to the philosophy of convention-over-configuration, | 
					
						
							|  |  |  | it is important to understand how to customize those handy defaults from time to time. | 
					
						
							|  |  |  | For almost every convention in Strapi, there is an accompanying set of configuration | 
					
						
							|  |  |  | options that allow you to adjust or override things to fit your needs. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Settings specified at the root directory will be available in all environments. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If you'd like to have some settings take effect only in certain environments, | 
					
						
							|  |  |  | you can use the special environment-specific files and folders. | 
					
						
							|  |  |  | Any files saved under the `./config/environments/development` directory will be | 
					
						
							|  |  |  | loaded only when Strapi is started in the `development` environment. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The built-in meaning of the settings in `strapi.config` are, in some cases, | 
					
						
							|  |  |  | only interpreted by Strapi during the `start` process. In other words, changing some | 
					
						
							|  |  |  | options at runtime will have no effect. To change the port your application is running on, | 
					
						
							|  |  |  | for instance, you can't just change `strapi.config.port`. You'll need to change or | 
					
						
							|  |  |  | override the setting in a configuration file or as a command-line argument, | 
					
						
							|  |  |  | then restart the server. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## Application package
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | `strapi.config` merge user config from the `./config` directory with the `package.json` | 
					
						
							|  |  |  | of the application. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The most important things in your `package.json` are the name and version fields. | 
					
						
							|  |  |  | Those are actually required, and your package won't install without them. | 
					
						
							|  |  |  | The name and version together form an identifier that is assumed to be completely unique. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Application name
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The name of the application. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `name` | 
					
						
							|  |  |  | - Environment: all | 
					
						
							|  |  |  | - Location: `./package.json` | 
					
						
							|  |  |  | - Type: `string` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - The name must be shorter than 214 characters. This includes the scope for scoped packages. | 
					
						
							|  |  |  | - The name can't start with a dot or an underscore. | 
					
						
							|  |  |  | - New packages must not have uppercase letters in the name. | 
					
						
							|  |  |  | - The name ends up being part of a URL, an argument on the command line, and a folder name. | 
					
						
							|  |  |  |   Therefore, the name can't contain any non-URL-safe characters. | 
					
						
							|  |  |  | - Don't use the same name as a core Node.js module. | 
					
						
							|  |  |  | - Don't put "js" or "node" in the name. It's assumed that it's JavaScript, since you're writing | 
					
						
							|  |  |  |   a `package.json` file. | 
					
						
							|  |  |  | - The name will probably be passed as an argument to `require()`, so it should be something short, | 
					
						
							|  |  |  |   but also reasonably descriptive. You may want to check the npm registry to see if there's something | 
					
						
							|  |  |  |   by that name already, before you get too attached to it. https://www.npmjs.com/ | 
					
						
							|  |  |  | - A name can be optionally prefixed by a scope, e.g. `@myorg/mypackage`. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Application version
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Changes to the package should come along with changes to the version. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `version` | 
					
						
							|  |  |  | - Environment: all | 
					
						
							|  |  |  | - Location: `./package.json` | 
					
						
							|  |  |  | - Type: `string` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - Version must be parseable by `node-semver`, which is bundled with npm as a dependency. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Application description
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The description of your application helps people discover your package, as it's listed in `npm search`. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `description` | 
					
						
							|  |  |  | - Environment: all | 
					
						
							|  |  |  | - Location: `./package.json` | 
					
						
							|  |  |  | - Type: `string` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## Global settings
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Public assets
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Public assets refer to static files on your server that you want to make accessible to the | 
					
						
							|  |  |  | outside world. In Strapi, these files are placed in the `./public` directory. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Strapi is compatible with any front-end strategy; whether it's Angular, Backbone, Ember, | 
					
						
							|  |  |  | iOS, Android, Windows Phone, or something else that hasn't been invented yet. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `static` | 
					
						
							|  |  |  | - Environment: all | 
					
						
							|  |  |  | - Location: `./config/general.json` | 
					
						
							|  |  |  | - Type: `boolean` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "static": true | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - Set to `false` to disable the public assets. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Views
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `views` | 
					
						
							|  |  |  | - Environment: all | 
					
						
							|  |  |  | - Location: `./config/general.json` | 
					
						
							|  |  |  | - Type: `object` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "views": false | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | For more information, please refer to the [views documentation](http://strapi.io/documentation/views). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Options: | 
					
						
							|  |  |  | - `map`: Object mapping extension names to engine names. | 
					
						
							|  |  |  | - `default`: Default extension name to use when missing. | 
					
						
							|  |  |  | - `cache`: When `true` compiled template functions will be cached in-memory, | 
					
						
							|  |  |  |   this prevents subsequent disk I/O, as well as the additional compilation step | 
					
						
							|  |  |  |   that most template engines peform. By default this is enabled when the `NODE_ENV` | 
					
						
							|  |  |  |   environment variable is anything but `development`, such as `stage` or `production`. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - Set to `false` to disable views support. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### WebSockets
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Socket.IO enables real-time bidirectional event-based communication. | 
					
						
							|  |  |  | It works on every platform, browser or device, focusing equally on reliability | 
					
						
							|  |  |  | and speed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | By default Strapi binds Socket.IO and your common websockets features are | 
					
						
							|  |  |  | available using the `io` object. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `websockets` | 
					
						
							|  |  |  | - Environment: all | 
					
						
							|  |  |  | - Location: `./config/general.json` | 
					
						
							|  |  |  | - Type: `boolean` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "websockets": true | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - Set to `false` to disable websockets with Socket.IO. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Favicon
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Set a favicon for your web application. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `favicon` | 
					
						
							|  |  |  | - Environment: all | 
					
						
							|  |  |  | - Location: `./config/general.json` | 
					
						
							|  |  |  | - Type: `object` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "favicon": { | 
					
						
							|  |  |  |       "path": "favicon.ico", | 
					
						
							|  |  |  |       "maxAge": 86400000 | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Options: | 
					
						
							|  |  |  | - `path` (string): Relative path for the favicon to use from the application root directory. | 
					
						
							|  |  |  | - `maxAge` (integer): Cache-control max-age directive. Set to pass the cache-control in ms. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - Set to `false` to disable the favicon feature. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### API prefix
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Prefix your API aiming to not have any conflicts with your front-end if you have one of if need to | 
					
						
							|  |  |  | for some other reasons. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `prefix` | 
					
						
							|  |  |  | - Environment: all | 
					
						
							|  |  |  | - Location: `./config/general.json` | 
					
						
							|  |  |  | - Type: `string` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "prefix": "" | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - Let an empty string if you don't want to prefix your API. | 
					
						
							|  |  |  | - The prefix must starts with a `/`, e.g. `/api`. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Blueprints
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The blueprints are a set of useful actions containing all the logic you need to | 
					
						
							|  |  |  | create a clean RESTful API. The generated controllers and routes are automatically | 
					
						
							|  |  |  | plugged to the blueprint actions. Thanks to that, as soon as you generate a new API | 
					
						
							|  |  |  | from the CLI, you can enjoy a RESTful API without writing any line of code. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `blueprints` | 
					
						
							|  |  |  | - Environment: all | 
					
						
							|  |  |  | - Location: `./config/general.json` | 
					
						
							|  |  |  | - Type: `object` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "blueprints": { | 
					
						
							|  |  |  |       "defaultLimit": 30, | 
					
						
							|  |  |  |       "populate": true | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Options: | 
					
						
							|  |  |  | - `defaultLimit` (integer): The maximum number of records to send back. | 
					
						
							|  |  |  | - `populate` (boolean): If enabled, the population process fills out attributes | 
					
						
							|  |  |  |   in the returned list of records according to the model's defined associations. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### i18n
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If your application will touch people or systems from all over the world, internationalization | 
					
						
							|  |  |  | and localization (`i18n`) may be an important part of your international strategy. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Strapi provides built-in support for detecting user language preferences and translating | 
					
						
							|  |  |  | static words/sentences. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `i18n` | 
					
						
							|  |  |  | - Environment: all | 
					
						
							|  |  |  | - Location: `./config/i18n.json` | 
					
						
							|  |  |  | - Type: `object` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "i18n": { | 
					
						
							|  |  |  |       "defaultLocale": "en", | 
					
						
							|  |  |  |       "modes": [ | 
					
						
							|  |  |  |         "query", | 
					
						
							|  |  |  |         "subdomain", | 
					
						
							|  |  |  |         "cookie", | 
					
						
							|  |  |  |         "header", | 
					
						
							|  |  |  |         "url", | 
					
						
							|  |  |  |         "tld" | 
					
						
							|  |  |  |       ], | 
					
						
							|  |  |  |       "cookieName": "locale" | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Options: | 
					
						
							|  |  |  | - `defaultLocale` (string): The default locale to use. | 
					
						
							|  |  |  | - `modes` (array): Accept locale variable from: | 
					
						
							|  |  |  |   - `query`: detect query string with `/?locale=fr` | 
					
						
							|  |  |  |   - `subdomain`: detect subdomain with `fr.myapp.com` | 
					
						
							|  |  |  |   - `cookie`: detect cookie with `Accept-Language: en,fr;q=0.5` | 
					
						
							|  |  |  |   - `header`: detect header with `Cookie: locale=fr` | 
					
						
							|  |  |  |   - `url`: detect url with `/fr` | 
					
						
							|  |  |  |   - `tld`: detect TLD with `myapp.fr` | 
					
						
							|  |  |  | - `cookieName` (string): i18n cookies property, tries to find a cookie named `locale` here. | 
					
						
							|  |  |  |   Allows the locale to be set from query string or from cookie. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - Set to `false` to disable the locales feature. | 
					
						
							|  |  |  | - Locales may be configured in the `./config/locales` directory. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Global variables
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | For convenience, Strapi exposes a handful of global variables. By default, your application's | 
					
						
							|  |  |  | models, the global `strapi` object and the Lodash node module are all available on the global | 
					
						
							|  |  |  | scope; meaning you can refer to them by name anywhere in your backend code | 
					
						
							|  |  |  | (as long as Strapi has been loaded). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Nothing in Strapi core relies on these global variables. Each and every global exposed in | 
					
						
							|  |  |  | Strapi may be disabled in `strapi.config.globals`. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Bear in mind that none of the globals, including `strapi`, are accessible until after | 
					
						
							|  |  |  | Strapi has loaded. In other words, you won't be able to use `strapi.models.car` or `Car` | 
					
						
							|  |  |  | outside of a function (since Strapi will not have finished loading yet). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `globals` | 
					
						
							|  |  |  | - Environment: all | 
					
						
							|  |  |  | - Location: `./config/globals.json` | 
					
						
							|  |  |  | - Type: `object` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "globals": { | 
					
						
							|  |  |  |       "models": true, | 
					
						
							|  |  |  |       "strapi": true, | 
					
						
							|  |  |  |       "async": true, | 
					
						
							|  |  |  |       "_": true, | 
					
						
							|  |  |  |       "graphql": true | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Options: | 
					
						
							|  |  |  | - `models` (boolean): Your application's models are exposed as global variables using their `globalId`. | 
					
						
							|  |  |  |   For instance, the model defined in the file `./api/car/models/Car.js` will be globally accessible as `Car`. | 
					
						
							|  |  |  | - `strapi` (boolean): In most cases, you will want to keep the `strapi` object globally accessible, | 
					
						
							|  |  |  |   it makes your application code much cleaner. | 
					
						
							|  |  |  | - `async` (boolean): Exposes an instance of Async. | 
					
						
							|  |  |  | - `_` (boolean): Exposes an instance of Lodash. | 
					
						
							|  |  |  | - `graphql` (boolean): Exposes an instance of GraphQL. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - Set to `false` to disable global variables. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Bootstrap function
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The bootstrap function is a server-side JavaScript file that is executed by Strapi | 
					
						
							|  |  |  | just before your application is started. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This gives you an opportunity to set up your data model, run jobs, or perform some special logic. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `bootstrap` | 
					
						
							|  |  |  | - Environment: all | 
					
						
							|  |  |  | - Location: `./config/functions/bootstrap.js` | 
					
						
							|  |  |  | - Type: `function` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - It's very important to trigger the callback method when you are finished with the bootstrap. | 
					
						
							|  |  |  |   Otherwise your server will never start, since it's waiting on the bootstrap. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### CRON tasks
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | CRON tasks allow you to schedule jobs (arbitrary functions) for execution at specific dates, | 
					
						
							|  |  |  | with optional recurrence rules. It only uses a single timer at any given time | 
					
						
							|  |  |  | (rather than reevaluating upcoming jobs every second/minute). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `cron` | 
					
						
							|  |  |  | - Environment: all | 
					
						
							|  |  |  | - Location: `./config/functions/cron.js` | 
					
						
							|  |  |  | - Type: `object` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |     module.exports.cron = { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       /** | 
					
						
							|  |  |  |        * Every day at midnight. | 
					
						
							|  |  |  |        */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       '0 0 * * *': function () { | 
					
						
							|  |  |  |         // Your code here | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - The cron format consists of: | 
					
						
							|  |  |  |   1. second (0 - 59, optional) | 
					
						
							|  |  |  |   2. minute (0 - 59) | 
					
						
							|  |  |  |   3. hour (0 - 23) | 
					
						
							|  |  |  |   4. day of month (1 - 31) | 
					
						
							|  |  |  |   5. month (1 - 12) | 
					
						
							|  |  |  |   6. day of week (0 - 7) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Studio connection
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The Strapi Studio is a toolbox for developers that allows you to build and manage | 
					
						
							|  |  |  | your APIs in realtime without writing any line of code. When your application is | 
					
						
							|  |  |  | linked to the Studio, you are able to generate APIs from the Studio and see | 
					
						
							|  |  |  | the changes in realtime in your local application. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `studio` | 
					
						
							|  |  |  | - Environment: all | 
					
						
							|  |  |  | - Location: `./config/studio.json` | 
					
						
							|  |  |  | - Type: `object` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "studio": { | 
					
						
							|  |  |  |       "enabled": true, | 
					
						
							|  |  |  |       "secretKey": "YOUR SECRET KEY HERE" | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Options: | 
					
						
							|  |  |  | - `enabled` (boolean): Do you want your application linked to the Strapi Studio? | 
					
						
							|  |  |  | - `secretKey` (string): The secret key of your application to link your | 
					
						
							|  |  |  |   current application with the Strapi Studio. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## General environment settings
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Host
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The host name the connection was configured to. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `host` | 
					
						
							|  |  |  | - Environment: `development` | 
					
						
							|  |  |  | - Location: `./config/environments/development/server.json` | 
					
						
							|  |  |  | - Type: `string` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "host": "localhost" | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - You don't need to specify a `host` in a `production` environment. | 
					
						
							|  |  |  | - Defaults to the operating system hostname when available, otherwise `localhost`. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Port
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The actual port assigned after the server has been started. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `port` | 
					
						
							|  |  |  | - Environment: `development` | 
					
						
							|  |  |  | - Location: `./config/environments/development/server.json` | 
					
						
							|  |  |  | - Type: `integer` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "port": 1337 | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - You don't need to specify a `host` in a `production` environment. | 
					
						
							|  |  |  | - When no port is configured or set, Strapi will look for the `process.env.PORT` | 
					
						
							|  |  |  |   value. If no port specified, the port will be `1337`. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Front-end URL
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This is the URL of your front-end application. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This config key is useful when you don't use the `./public` directory for your | 
					
						
							|  |  |  | assets or when you run your automation tools such as Gulp or Grunt on an other port. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This address can be resourceful when you need to redirect the user after he | 
					
						
							|  |  |  | logged in with an authentication provider. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `frontendUrl` | 
					
						
							|  |  |  | - Environment: `development` | 
					
						
							|  |  |  | - Location: `./config/environments/development/server.json` | 
					
						
							|  |  |  | - Type: `string` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "frontendUrl": "" | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Reload
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Enable or disable auto-reload when your application crashes. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `reload` | 
					
						
							|  |  |  | - Environment: `development` | 
					
						
							|  |  |  | - Location: `./config/environments/development/server.json` | 
					
						
							|  |  |  | - Type: `object` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "reload": { | 
					
						
							|  |  |  |       "timeout": 1000, | 
					
						
							|  |  |  |       "workers": 1 | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Options: | 
					
						
							|  |  |  | - `timeout` (integer): Set the timeout before killing a worker in ms. | 
					
						
							|  |  |  | - `workers` (integer): Set the number of workers to spawn. | 
					
						
							|  |  |  |   If the `workers` key is not defined, Strapi will use every free CPU | 
					
						
							| 
									
										
										
										
											2019-06-01 12:39:54 +02:00
										 |  |  |   (recommended in `production` environment). | 
					
						
							| 
									
										
										
										
											2017-10-10 11:15:24 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - Set to `false` to disable the auto-reload and clustering features. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## Request
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Logger
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Enable or disable request logs. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `logger` | 
					
						
							|  |  |  | - Environment: `development` | 
					
						
							|  |  |  | - Location: `./config/environments/development/server.json` | 
					
						
							|  |  |  | - Type: `boolean` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "logger": true | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - Set to `false` to disable the logger. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Body parser
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Parse request bodies. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `parser` | 
					
						
							|  |  |  | - Environment: `development` | 
					
						
							|  |  |  | - Location: `./config/environments/development/server.json` | 
					
						
							|  |  |  | - Type: `object` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "parser": { | 
					
						
							|  |  |  |       "encode": "utf-8", | 
					
						
							|  |  |  |       "formLimit": "56kb", | 
					
						
							|  |  |  |       "jsonLimit": "1mb", | 
					
						
							|  |  |  |       "strict": true, | 
					
						
							|  |  |  |       "extendTypes": { | 
					
						
							|  |  |  |         "json": [ | 
					
						
							|  |  |  |           "application/x-javascript" | 
					
						
							|  |  |  |         ] | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Options: | 
					
						
							|  |  |  | - `encode` (string): Requested encoding. | 
					
						
							|  |  |  | - `formLimit` (string): Limit of the urlencoded body. | 
					
						
							|  |  |  |   If the body ends up being larger than this limit, a 413 error code is returned. | 
					
						
							|  |  |  | - `jsonLimit` (string): Limit of the JSON body. | 
					
						
							|  |  |  | - `strict` (boolean): When set to `true`, JSON parser will only accept arrays and objects. | 
					
						
							|  |  |  | - `extendTypes` (array): Support extend types. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - Set to `false` to disable the body parser. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## Response
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Gzip
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Enable or disable Gzip compression. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `gzip` | 
					
						
							|  |  |  | - Environment: `development` | 
					
						
							|  |  |  | - Location: `./config/environments/development/server.json` | 
					
						
							|  |  |  | - Type: `boolean` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "gzip": true | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - Set to `false` to disable Gzip. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Response time header
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The `X-Response-Time` header records the response time for requests in HTTP servers. | 
					
						
							|  |  |  | The response time is defined here as the elapsed time from when a request enters the application | 
					
						
							|  |  |  | to when the headers are written out to the client. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `responseTime` | 
					
						
							|  |  |  | - Environment: `development` | 
					
						
							|  |  |  | - Location: `./config/environments/development/reponse.json` | 
					
						
							|  |  |  | - Type: `boolean` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "responseTime": true | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - Set to `false` to disable the response time header. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## Databases
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Strapi comes installed with a powerful ORM/ODM called Waterline, a datastore-agnostic tool that | 
					
						
							|  |  |  | dramatically simplifies interaction with one or more databases. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | It provides an abstraction layer on top of the underlying database, allowing you to easily query | 
					
						
							|  |  |  | and manipulate your data without writing vendor-specific integration code. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `orm` | 
					
						
							|  |  |  | - Environment: `development` | 
					
						
							|  |  |  | - Location: `./config/environments/development/databases.json` | 
					
						
							|  |  |  | - Type: `object` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "orm": { | 
					
						
							|  |  |  |       "adapters": { | 
					
						
							|  |  |  |         "disk": "sails-disk" | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       "defaultConnection": "default", | 
					
						
							|  |  |  |       "connections": { | 
					
						
							|  |  |  |         "default": { | 
					
						
							|  |  |  |           "adapter": "disk", | 
					
						
							|  |  |  |           "filePath": ".tmp/", | 
					
						
							|  |  |  |           "fileName": "default.db", | 
					
						
							|  |  |  |           "migrate": "alter" | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         "permanent": { | 
					
						
							|  |  |  |           "adapter": "disk", | 
					
						
							|  |  |  |           "filePath": "./data/", | 
					
						
							|  |  |  |           "fileName": "permanent.db", | 
					
						
							|  |  |  |           "migrate": "alter" | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Options: | 
					
						
							|  |  |  | - `adapters` (object): Association between a connection and the adapter to use. | 
					
						
							|  |  |  | - `defaultConnection` (string): The default connection will be used if the | 
					
						
							|  |  |  |   `connection` key of a model is empty or missing. | 
					
						
							|  |  |  | - `connections` (object): Options of the connection. | 
					
						
							|  |  |  |   Every adapter has its own options such as `host`, `port`, `database`, etc. | 
					
						
							|  |  |  |   The `migrate` option controls how Strapi will attempt to automatically | 
					
						
							|  |  |  |   rebuild the tables/collections/sets/etc. in your schema. | 
					
						
							|  |  |  |   - `safe`: never auto-migrate database(s). | 
					
						
							|  |  |  |   - `alter`: auto-migrate database(s), but attempt to keep existing data. | 
					
						
							|  |  |  |   - `drop`: drop all data and rebuild models every time your application starts. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - When your Strapi application starts, the Waterline ORM validates all of the data in your database. | 
					
						
							|  |  |  |   This `migrate` flag tells waterline what to do with data when the data is corrupt. | 
					
						
							|  |  |  |   You can set this flag to `safe` which will ignore the corrupt data and continue to start. | 
					
						
							|  |  |  | - By using `drop`, or even `alter`, you risk losing your data. Be careful. | 
					
						
							|  |  |  |   Never use `drop` or `alter` with a production dataset. | 
					
						
							|  |  |  |   Additionally, on large databases `alter` may take a long time to complete at startup. | 
					
						
							|  |  |  |   This may cause the start process to appear to hang. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## Security
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Sessions
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Since HTTP driven applications are stateless, sessions provide a way to store information | 
					
						
							|  |  |  | about the user across requests. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Strapi provides "guest" sessions, meaning any visitor will have a session, | 
					
						
							|  |  |  | authenticated or not. If a session is new a `Set-Cookie` will be produced regardless | 
					
						
							|  |  |  | of populating the session. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Strapi only supports cookie sessions, for now. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `session` | 
					
						
							|  |  |  | - Environment: `development` | 
					
						
							|  |  |  | - Location: `./config/environments/development/security.json` | 
					
						
							|  |  |  | - Type: `object` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "session": { | 
					
						
							|  |  |  |       "key": "myApp", | 
					
						
							|  |  |  |       "secretKeys": [ | 
					
						
							|  |  |  |         "mySecretKey1" | 
					
						
							|  |  |  |       ], | 
					
						
							|  |  |  |       "maxAge": 86400000 | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Options: | 
					
						
							|  |  |  | - `key` (string): The cookie name. | 
					
						
							|  |  |  | - `secretKeys` (array): Keys used to encrypt the session cookie. | 
					
						
							|  |  |  | - `maxAge` (integer): Sets the time in seconds for when a cookie will be deleted. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - Set to `false` to disable sessions. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Cross Site Request Forgery (CSRF) headers
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | CSRF is a type of attack which forces an end user to execute unwanted actions on a web | 
					
						
							|  |  |  | application backend with which he/she is currently authenticated. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Strapi bundles optional CSRF protection out of the box. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `csrf` | 
					
						
							|  |  |  | - Environment: `development` | 
					
						
							|  |  |  | - Location: `./config/environments/development/security.json` | 
					
						
							|  |  |  | - Type: `object` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "csrf": false | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Options: | 
					
						
							|  |  |  | - `key` (string): The name of the CSRF token added to the model. | 
					
						
							|  |  |  |   Defaults to `_csrf`. | 
					
						
							|  |  |  | - `secret` (string): The key to place on the session object which maps to the server side token. | 
					
						
							|  |  |  |   Defaults to `_csrfSecret`. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - Set to `false` to disable CSRF headers. | 
					
						
							|  |  |  | - If you have existing code that communicates with your Strapi backend via `POST`, `PUT`, or `DELETE` | 
					
						
							|  |  |  |   requests, you'll need to acquire a CSRF token and include it as a parameter or header in those requests. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Content Security Policy (CSP) headers
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Content Security Policy (CSP) is a W3C specification for instructing the client browser as to | 
					
						
							|  |  |  | which location and/or which type of resources are allowed to be loaded. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This spec uses "directives" to define a loading behaviors for target resource types. | 
					
						
							|  |  |  | Directives can be specified using HTTP response headers or or HTML Meta tags. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `csp` | 
					
						
							|  |  |  | - Environment: `development` | 
					
						
							|  |  |  | - Location: `./config/environments/development/security.json` | 
					
						
							|  |  |  | - Type: `object` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "csp": false | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Options: | 
					
						
							|  |  |  | - `policy` (object): Object definition of policy. | 
					
						
							|  |  |  | - `reportOnly` (boolean): Enable report only mode. | 
					
						
							|  |  |  | - `reportUri` (string): URI where to send the report data. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - Set to `false` to disable CSP headers. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### X-Frame-Options headers
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Enables `X-Frame-Options` headers to help prevent Clickjacking. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `xframe` | 
					
						
							|  |  |  | - Environment: `development` | 
					
						
							|  |  |  | - Location: `./config/environments/development/security.json` | 
					
						
							|  |  |  | - Type: `string` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "xframe": "SAMEORIGIN" | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - The string is the value for the header: `DENY`, `SAMEORIGIN` or `ALLOW-FROM`. | 
					
						
							|  |  |  | - Set to `false` to disable X-Frame-Options headers. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Platform for Privacy Preferences
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Platform for Privacy Preferences (P3P) is a browser/web standard designed to facilitate | 
					
						
							|  |  |  | better consumer web privacy control. Currently out of all the major browsers, it is only | 
					
						
							|  |  |  | supported by Internet Explorer. It comes into play most often when dealing with legacy applications. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `p3p` | 
					
						
							|  |  |  | - Environment: `development` | 
					
						
							|  |  |  | - Location: `./config/environments/development/security.json` | 
					
						
							|  |  |  | - Type: `string` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "p3p": false | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - The string is the value of the compact privacy policy. | 
					
						
							|  |  |  | - Set to `false` to disable P3P. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### HTTP Strict Transport Security
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Enables HTTP Strict Transport Security for the host domain. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The preload flag is required for HSTS domain submissions to Chrome's HSTS preload list. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `hsts` | 
					
						
							|  |  |  | - Environment: `development` | 
					
						
							|  |  |  | - Location: `./config/environments/development/security.json` | 
					
						
							|  |  |  | - Type: `object` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "hsts": { | 
					
						
							|  |  |  |       "maxAge": 31536000, | 
					
						
							|  |  |  |       "includeSubDomains": true | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Options: | 
					
						
							|  |  |  | - `maxAge` (integer): Number of seconds HSTS is in effect. | 
					
						
							|  |  |  | - `includeSubDomains` (boolean): Applies HSTS to all subdomains of the host. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - Set to `false` to disable HSTS. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### X-XSS-Protection headers
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Cross-site scripting (XSS) is a type of attack in which a malicious agent manages to inject | 
					
						
							|  |  |  | client-side JavaScript into your website, so that it runs in the trusted environment of your users' browsers. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Enables `X-XSS-Protection` headers to help prevent cross site scripting (XSS) attacks in older IE browsers (IE8). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `xssProtection` | 
					
						
							|  |  |  | - Environment: `development` | 
					
						
							|  |  |  | - Location: `./config/environments/development/security.json` | 
					
						
							|  |  |  | - Type: `object` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "xssProtection": false | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Options: | 
					
						
							|  |  |  | - `enabled` (boolean): If the header is enabled or not. | 
					
						
							|  |  |  | - `mode` (string): Mode to set on the header. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - Set to `false` to disable HTTP Strict Transport Security. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Cross-Origin Resource Sharing (CORS)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Cross-origin resource sharing (CORS) is a mechanism that allows restricted resources | 
					
						
							|  |  |  | (e.g. fonts, JavaScript, etc.) on a web page to be requested from another domain outside | 
					
						
							|  |  |  | the domain from which the resource originated. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `cors` | 
					
						
							|  |  |  | - Environment: `development` | 
					
						
							|  |  |  | - Location: `./config/environments/development/security.json` | 
					
						
							|  |  |  | - Type: `object` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "cors": { | 
					
						
							|  |  |  |       "origin": true, | 
					
						
							|  |  |  |       "expose": [ | 
					
						
							|  |  |  |         "WWW-Authenticate", | 
					
						
							|  |  |  |         "Server-Authorization" | 
					
						
							|  |  |  |       ], | 
					
						
							|  |  |  |       "maxAge": 31536000, | 
					
						
							|  |  |  |       "credentials": true, | 
					
						
							|  |  |  |       "methods": [ | 
					
						
							|  |  |  |         "GET", | 
					
						
							|  |  |  |         "POST", | 
					
						
							|  |  |  |         "PUT", | 
					
						
							|  |  |  |         "DELETE", | 
					
						
							|  |  |  |         "OPTIONS", | 
					
						
							|  |  |  |         "HEAD" | 
					
						
							|  |  |  |       ], | 
					
						
							|  |  |  |       "headers": [ | 
					
						
							|  |  |  |         "Content-Type", | 
					
						
							|  |  |  |         "Authorization" | 
					
						
							|  |  |  |       ] | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Options: | 
					
						
							|  |  |  | - `origin` (string|boolean): Configures the `Access-Control-Allow-Origin` CORS header. | 
					
						
							|  |  |  |   Expects a string (ex: `http://example.com`) or a boolean. | 
					
						
							|  |  |  |   Set to `true` to reflect the request origin, as defined by `req.header('Origin')`. | 
					
						
							|  |  |  |   Set to `false` to disable CORS. | 
					
						
							|  |  |  | - `expose` (array): Configures the `Access-Control-Expose-Headers` CORS header. | 
					
						
							|  |  |  |   Set this to pass the header, otherwise it is omitted. | 
					
						
							|  |  |  | - `maxAge` (integer): Configures the `Access-Control-Max-Age` CORS header. | 
					
						
							|  |  |  |   Set to an integer to pass the header, otherwise it is omitted. | 
					
						
							|  |  |  | - `credentials` (boolean): Configures the `Access-Control-Allow-Credentials` CORS header. | 
					
						
							|  |  |  |   Set to `true` to pass the header, otherwise it is omitted. | 
					
						
							|  |  |  | - `methods` (array): Configures the `Access-Control-Allow-Methods` CORS header. | 
					
						
							|  |  |  | - `headers` (array): Configures the `Access-Control-Allow-Headers` CORS header. | 
					
						
							|  |  |  |   If not specified, defaults to reflecting the headers specified in the request's | 
					
						
							|  |  |  |   `Access-Control-Request-Headers` header. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - Set to `false` to disable CORS. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Secure Sockets Layer (SSL)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Secure Sockets Layer (SSL), is a cryptographic protocol designed to provide communications security | 
					
						
							|  |  |  | over a computer network. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This configuration enforce SSL for your application. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `ssl` | 
					
						
							|  |  |  | - Environment: `development` | 
					
						
							|  |  |  | - Location: `./config/environments/development/security.json` | 
					
						
							|  |  |  | - Type: `object` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "ssl": false | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Options: | 
					
						
							|  |  |  | - `disabled` (boolean): If `true`, this middleware will allow all requests through. | 
					
						
							|  |  |  | - `trustProxy` (boolean): If `true`, trust the `X-Forwarded-Proto` header. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - Set to `false` to disable SSL. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### IP filter
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The IP filter configuration allows you to whitelist or blacklist specific or range IP addresses. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The blacklisted IP addresses won't have access to your web application at all. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `ip` | 
					
						
							|  |  |  | - Environment: `development` | 
					
						
							|  |  |  | - Location: `./config/environments/development/security.json` | 
					
						
							|  |  |  | - Type: `object` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "ip": { | 
					
						
							|  |  |  |       "whiteList": [], | 
					
						
							|  |  |  |       "blackList": [] | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Options: | 
					
						
							|  |  |  | - `whiteList` (array): IP addresses allowed. | 
					
						
							|  |  |  | - `blackList` (array): IP addresses forbidden. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - Set to `false` to disable IP filter. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Proxy
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | A proxy server is a server that acts as an intermediary for requests from clients | 
					
						
							|  |  |  | seeking resources from other servers. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Request your server, fetch the proxy URL you typed and return. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Key: `proxy` | 
					
						
							|  |  |  | - Environment: `development` | 
					
						
							|  |  |  | - Location: `./config/environments/development/security.json` | 
					
						
							|  |  |  | - Type: `string` | 
					
						
							|  |  |  | - Defaults to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ```js | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "proxy": false | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | - The string will fetch the host and return. | 
					
						
							|  |  |  | - Set to `false` to disable the proxy security. |