Struct rocket_contrib::helmet::SpaceHelmet[][src]

pub struct SpaceHelmet { /* fields omitted */ }
Expand description

A Fairing that adds HTTP headers to outgoing responses that control security features on the browser.

Usage

To use SpaceHelmet, first construct an instance of it. To use the default set of headers, construct with SpaceHelmet::default(). For an instance with no preset headers, use SpaceHelmet::new(). To enable an additional header, use enable(), and to disable a header, use disable():

use rocket_contrib::helmet::SpaceHelmet;
use rocket_contrib::helmet::{XssFilter, ExpectCt};

// A `SpaceHelmet` with the default headers:
let helmet = SpaceHelmet::default();

// A `SpaceHelmet` with the default headers minus `XssFilter`:
let helmet = SpaceHelmet::default().disable::<XssFilter>();

// A `SpaceHelmet` with the default headers plus `ExpectCt`.
let helmet = SpaceHelmet::default().enable(ExpectCt::default());

// A `SpaceHelmet` with only `XssFilter` and `ExpectCt`.
let helmet = SpaceHelmet::default()
    .enable(XssFilter::default())
    .enable(ExpectCt::default());

Then, attach the instance of SpaceHelmet to your application’s instance of Rocket:

rocket::ignite()
    // ...
    .attach(helmet)

The fairing will inject all enabled headers into all outgoing responses unless the response already contains a header with the same name. If it does contain the header, a warning is emitted, and the header is not overwritten.

TLS and HSTS

If TLS is configured and enabled when the application is launched in a non-development environment (e.g., staging or production), HSTS is automatically enabled with its default policy and a warning is issued.

To get rid of this warning, explicitly enable() an Hsts policy.

Implementations

impl SpaceHelmet[src]

pub fn new() -> Self[src]

Returns an instance of SpaceHelmet with no headers enabled.

Example

use rocket_contrib::helmet::SpaceHelmet;

let helmet = SpaceHelmet::new();

pub fn enable<P: Policy>(self, policy: P) -> Self[src]

Enables the policy header policy.

If the poliicy was previously enabled, the configuration is replaced with that of policy.

Example

use rocket_contrib::helmet::SpaceHelmet;
use rocket_contrib::helmet::NoSniff;

let helmet = SpaceHelmet::new().enable(NoSniff::default());

pub fn disable<P: Policy>(self) -> Self[src]

Disables the policy header policy.

Example

use rocket_contrib::helmet::SpaceHelmet;
use rocket_contrib::helmet::NoSniff;

let helmet = SpaceHelmet::default().disable::<NoSniff>();

pub fn is_enabled<P: Policy>(&self) -> bool[src]

Returns true if the policy P is enabled.

Example

use rocket_contrib::helmet::SpaceHelmet;
use rocket_contrib::helmet::{XssFilter, NoSniff, Frame};
use rocket_contrib::helmet::{Hsts, ExpectCt, Referrer};

let helmet = SpaceHelmet::default();

assert!(helmet.is_enabled::<XssFilter>());
assert!(helmet.is_enabled::<NoSniff>());
assert!(helmet.is_enabled::<Frame>());

assert!(!helmet.is_enabled::<Hsts>());
assert!(!helmet.is_enabled::<ExpectCt>());
assert!(!helmet.is_enabled::<Referrer>());

Trait Implementations

impl Default for SpaceHelmet[src]

fn default() -> Self[src]

Returns a new SpaceHelmet instance. See the table for a description of the policies used by default.

Example

use rocket_contrib::helmet::SpaceHelmet;

let helmet = SpaceHelmet::default();

impl Fairing for SpaceHelmet[src]

fn info(&self) -> Info[src]

Returns an Info structure containing the name and Kind of this fairing. The name can be any arbitrary string. Kind must be an ord set of Kind variants. Read more

fn on_response(&self, _request: &Request<'_>, response: &mut Response<'_>)[src]

The response callback. Read more

fn on_launch(&self, rocket: &Rocket)[src]

The launch callback. Read more

fn on_attach(&self, rocket: Rocket) -> Result<Rocket, Rocket>[src]

The attach callback. Returns Ok if launch should proceed and Err if launch should be aborted. Read more

fn on_request(&self, request: &mut Request<'_>, data: &Data)[src]

The request callback. Read more

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T, I> AsResult<T, I> for T where
    I: Input, 

pub fn as_result(self) -> Result<T, ParseErr<I>>

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T> IntoCollection<T> for T

pub fn into_collection<A>(self) -> SmallVec<A> where
    A: Array<Item = T>, 

Converts self into a collection.

pub fn mapped<U, F, A>(self, f: F) -> SmallVec<A> where
    F: FnMut(T) -> U,
    A: Array<Item = U>, 

impl<T> IntoSql for T[src]

fn into_sql<T>(self) -> Self::Expression where
    Self: AsExpression<T>, 
[src]

Convert self to an expression for Diesel’s query builder. Read more

fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression where
    &'a Self: AsExpression<T>, 
[src]

Convert &self to an expression for Diesel’s query builder. Read more

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 

type Err = <U as TryFrom<T>>::Err

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Err>

impl<T> Typeable for T where
    T: Any

fn get_type(&self) -> TypeId

Get the TypeId of this object.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 

pub fn vzip(self) -> V