Мое расширение chrome иногда работает нормально, если у меня открыто другое приложение (в котором не используется CORS). Но иногда расширение браузера отправляет запрос перед полетом, и тогда мой код не работает.
Вот заголовок запроса в случае, когда, к сожалению, отправляется предпечатная проверка:
OPTIONS /sub_crud/Subit_backend/register HTTP/1.1
Host: www.xxxxubstantiation.com
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Access-Control-Request-Method: POST
Origin: chrome-extension://xxxxlhfmhghjhbkkkaaammfocdpib
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
Access-Control-Request-Headers: content-type,x-requested-with
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Я получаю ошибку:
"заблокировано политикой CORS: поле заголовка запроса
Access-Control-Allow-Headers в x-запрашиваемый-с не допускается в
предполетный ответ. "
Но я не хочу отправлять предварительную проверку и не знаю, почему иногда отправляется предварительная проверка. Мне интересно, если проблема как-то связана с Prellighted запросами и перенаправлениями? также, вот код, который устанавливает запрос:
xhr.open('POST', url, true);
// xhr.setRequestHeader("Content-type", 'text/plain');
xhr.setRequestHeader("Content-type", 'application/json');
xhr.setRequestHeader("X-Requested-With",'xmlhttprequest');
// xhr.setRequestHeader("Access-Control-Allow-Origin", '*');
Я пытался использовать text / plain в качестве типа контента, но это не сработало. Я также прокомментировал access-control-allow-origin, но это не сработало.
Есть идеи, как остановить предполетный полет? или если я не могу остановить предполёт, как настроить Apache для ответа на него?
Дополнительная информация *******************
1) и код js браузера, и код сервера (CI) - мои.
2) Я действительно даже не хотел предполетного запроса. Поскольку я отправляю type = application / json, браузер решил сделать это OPTION.
3) Моя функция PHP не срабатывает. У меня тоже есть отладчик.
4) Я изменил httpd.conf на сервере, чтобы он включал:
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Headers "Accept,Authorization,Content-Type,Origin"
Header set Access-Control-Allow-Methods "GET, POST, PATCH, PUT, DELETE"
Header set Access-Control-Max-Age: 86400
5) код, расширение браузера и сервер работали в прошлом.