Перейти к содержимому

CORS

cors — это middleware, который реализует CORS.

import { cors } from '@shelepuginivan/lunatic'
app.use(cors())
app.post('/', (req, res) => {
res.status(200).json({ message: 'теперь CORS поддерживается!' })
})
app.listen(8000)

cors — это конфигурируемый middleware, что означает, что оно принимает объект options с настройками:

import { cors, CorsOptions } from '@shelepuginivan/lunatic'
const corsOptions: CorsOptions = {
origin: 'http://localhost:3000',
credentials: true,
}
app.use(cors(corsOptions))
app.post('/', (req, res) => {
res.status(200).json({ message: 'теперь CORS поддерживается!' })
})
app.listen(8000)

Опции конфигурации

origin

Разрешенное происхождение запроса. Поведение зависит от типа аргумента предоставляемый.

  • booleantrue включает CORS для всех источников, false отключает CORS
  • string — конкретный источник, например, http://localhost:3000.
  • RegExp — все источники, соответствующие заданному регулярному выражению
  • string[] — все источники, присутствующие в списке
  • RegExp[] — все источники, соответствующие одному из заданных регулярных выражений
  • (origin: string) => boolean — функция-предикат, которая сообщает, разрешено ли разрешено ли происхождение

По умолчанию: "*" (разрешает CORS для всех оригиналов).

methods

Разрешенные методы запроса. Поведение зависит от типа аргумента.

  • HttpMethod — конкретный HTTP-метод
  • HttpMethod[] — любой HTTP-метод из списка

allowedHeaders

Разрешенные заголовки запроса. Поведение зависит от типа аргумента.

  • string - конкретный заголовок
  • string[] - все заголовки, присутствующие в списке

credentials

Разрешать ли учетные данные (credentials). Принимает значение типа boolean.

Обратите внимание, что если значение origin равно * (как по умолчанию), учетные данные не будут включены

exposedHeaders

Заголовки ответа, которые могут быть доступны в браузерного JavaScript. Поведение зависит от типа аргумента.

  • string - конкретный заголовок
  • string[] - все заголовки, присутствующие в списке

maxAge

Настраивает Access-Control-Max-Age заголовок. Принимает аргумент типа number, которое является значением в секундах.

corsErrorStatus

Статус ответа, если CORS не разрешен для данного запроса. Принимает аргумент типа number.

По умолчанию: 403

preflightSuccessStatus

Статус ответа для предварительных OPTIONS запросов. Принимается аргумент типа number.

По умолчанию: 204