На моем сайте есть автоматический ввод текста, который предлагает результаты в качестве пользовательских типов. Результаты предоставляются вызовами AJAX API в другом домене. Это означает, что я должен использовать CORS для разрешения запросов.
Все это работает довольно хорошо, но каждый раз, когда пользователь вводит новый символ, браузер отправляет новый запрос OPTIONS, чтобы убедиться, что он авторизован.
Есть ли способ обойти все эти повторные запросы вариантов?
Мой PHP-скрипт, получающий запросы, имеет
header("Access-Control-Allow-Origin: http://consent.example.com");
и все запросы происходят из consent.example.com
, Чтобы было ясно, авторизация работает просто отлично, и запрос успешно завершается, но я не знаю, почему он должен продолжать делать вызовы параметров. Для меня будет иметь смысл, что браузер будет кешировать это.
В соответствии с RFC 2616 («Протокол передачи гипертекста — HTTP / 1.1»), раздел 9.2:
9.2 ВАРИАНТЫ
…
Ответы на этот метод не кешируются.
Спецификация HTTP явно запрещает кэширование ответов OPTIONS.
Стоит отметить, что ответы GET также не используют кэширование (я вижу, что customers?search=alex
200 каждый раз). Это просто потому, что сервер решает не отправлять 304 ответа на этот запрос, или ваш браузер не сообщает серверу, что у него есть кэшированная копия, If-Modified-Since
или же If-None-Match
заголовок запроса.
Других решений пока нет …