zkrvndm
@zkrvndm
Архитектор решений

Как отключить Preflight-запросы?

Я обратил внимание на то, что перед тем, как сделать запрос на мой сервер, браузер сначала делает некий предзапрос с типом OPTIONS и фактически получается, что из-за этого страдает скорость загрузки и я получаю ответ в 2 раза медленнее.

Возможно ли как-то отключить Preflight-запросы при кросс-доменных обращениях?

Что я пробовал делать:
<?php

// Если это предзапрос:

if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
	
	// Отдаем только заголовки, без тела:
	header('access-control-allow-origin: *');
	header('access-control-allow-methods: *');
	header('access-control-allow-headers: *');
	header('access-control-expose-headers: *');
	
	// Указываем закешировать предзапрос:
	header('access-control-max-age: 600');
	
}

Однако это не помогло и предзапросы все равно отправляются браузером, так как я никогда не обращаюсь по одному и тому же адресу. Нельзя ли на стороне сервера как-то дать понять браузеру, что бы он не слал Preflight, а обращался сразу?
  • Вопрос задан
  • 1313 просмотров
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
Возможно проще будет не делать вещей которые вызывают Preflight запросы. В частности вместо Content-Type: application/json можно посылать запрос как text/plain.

https://developer.mozilla.org/en-US/docs/Web/HTTP/...

Уж не знаю почему разработчики CORS решили, что application/json это опасно.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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