Configuring HTTP
Overview of configuration options for the Nette HTTP.
If you are not using the whole framework, but only this library, read how to load the configuration.
HTTP Headers
For security reasons, the framework sends a header X-Frame-Options: SAMEORIGIN
, which says that a page can be
displayed inside another page (in element <iframe>
) only if it is on the same domain. This can be unwanted in
certain situations (for example, if you are developing a Facebook application), so the behavior can be changed by setting
frames: http://allowed-host.com
or frames: true
.
Content Security Policy
Headers Content-Security-Policy
(hereinafter referred to as CSP) can be easily assembled, their description can be
found in CSP description. CSP directives (such as script-src
) can
be written either as strings according to specification or as arrays of values for better readability. Then there is no need
to write quotation marks around keywords such as 'self'
. Nette will also automatically generate a value of
nonce
, so 'nonce-y4PopTLM=='
will be send in the header.
Use <script n:nonce>...</script>
in the templates and the nonce value will be filled in automatically.
Making secure websites in Nette is really easy.
Similarly, headers Content-Security-Policy-Report-Only
(which can be used in parallel with CSP) and Feature Policy can be added:
HTTP Cookie
You can change the default values of some parameters of the Nette\Http\Response::setCookie() and session methods.
The cookieDomain
option determines which domains (origins) can accept cookies. If not specified, the cookie is
accepted by the same (sub)domain as is set by it, excluding their subdomains. If cookieDomain
is specified,
then subdomains are also included. Therefore, specifying cookieDomain
is less restrictive than omitting.
For example, if cookieDomain: nette.org
is set, cookie is also available on all subdomains like
doc.nette.org
. This can also be achieved with the special value domain
, ie
cookieDomain: domain
.
The default value of cookieSecure
is auto
which means that if the website is running on HTTPS,
cookies will be sent with the Secure
flag and will therefore only be available via HTTPS.
For version 3.0, only the cookieSecure
parameter can be configured and its default value is
false
.
HTTP Proxy
If the site is running behind an HTTP proxy, enter the IP address of the proxy so that detection of HTTPS connections works
correctly, as well as the client IP address. That is, so that Nette\Http\Request::getRemoteAddress() and isSecured() return the correct values and links are generated with the https:
protocol in the templates.
Session
Basic sessions settings:
The autoStart
option controls when to start the session. The value always
means that the session is
always started when the application starts. The smart
value means that the session will be started when the
application starts only if it already exists, or at the moment we want to read from or write to it. Finally, the value
never
disables the automatic start of the session. This has been in use since nette/http 3.1.5.
You can also set all PHP session directives (in camelCase format) and also readAndClose. Example:
Session Cookie
The session cookie is sent with the same parameters as other cookie, but you can change these for it:
The cookieSamesite
option affects whether the cookie is sent with cross-origin requests, which provides some protection against
Cross-Site Request Forgery attecks.
DI Services
These services are added to the DI container:
Name | Type | Description |
---|---|---|
http.request |
Nette\Http\Request | HTTP request |
http.response |
Nette\Http\Response | HTTP response |
session.session |
Nette\Http\Session | session management |