Как избавится от CORS префлайта?

API и клиент находятся на разных хостах - api.domain.local и domain.local.
В каждом запросе к API я должен передавать токен. Создаю для этого кастомный заголовок Token.
Все запросы с этим заголовком выполняются с префлайтом (OPTIONS запрос), который уменьшает производительность.
Добавил в .htaccess след. строку:
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
Header add Access-Control-Allow-Headers "Token" #вот

Но клиент (Chrome, Angular, ngResource) все равно выполняет префлайт.

Если передавать токен в строке запроса, это может портить кеширование.
Хотелось бы передавать его в заголовках, но для этого нужно избавится от префлайта.
  • Вопрос задан
  • 355 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Создаю для этого кастомный заголовок Token.

Используйте стандартный Authorization... Хватит городить на пустом месте заголовки.

Но клиент (Chrome, Angular, ngResource) все равно выполняет префлайт.

Ну так как бы так работает CORS, на каждый запрос высылается запрос на подтверждение доступа. На каждый.

Хотелось бы передавать его в заголовках, но для этого нужно избавится от префлайта.

я не понимаю в чем проблема, просто не обрабатывайте на сервере префлайт запросы, разрешайте и закрывайте.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы