Сервер должен ответить в заголовке следующим образом:
Access-Control-Allow-Headers: content-type
Access-Control-Allow-Method: POST
Access-Control-Allow-Origin: *
И ответ должен быть HTTP 200. Первый заголовок - это тот, который соответствует полученному вами сообщению об ошибке, и должен затемисчезнуть ...
--- РАСШИРЕННЫЙ ОТВЕТ ---
Проверка заголовков ответа ОПЦИИ:
Я полагаю, вам нужно проверить, еслиЗапрос OPTIONS действительно отправляет обратно все необходимые заголовки, чтобы успешно обработать предпечатную проверку.Чтобы увидеть заголовки запроса OPTION, вы можете смоделировать it:
curl -i \
-H "Origin: http://your-calling-domain.com/" \
-H "Access-Control-Request-Method: GET" \
-H "Access-Control-Request-Headers: X-Requested-With" \
-X OPTIONS \
https://the-api-endpoint-you-want-to-call/... \
Вот пример для github api:
curl -i \
-H "Origin: http://your-calling-domain.com/" \
-H "Access-Control-Request-Method: GET" \
-H "Access-Control-Request-Headers: X-Requested-With" \
-X OPTIONS \
https://api.github.com/users/sebhildebrandt/org \
Ваш запрос на OPTIONнеобходимо сопоставить с заголовками RESPONSE ... более конкретно:
Access-Control-Request-Method
необходимо сопоставить (быть одним из) Access-Control-Allow-Method
Access-Control-Request-Headers
необходимо сопоставить с (быть одним из) Access-Control-Allow-Headers
Origin
необходимо сопоставить с Access-Control-Allow-Origin
Только когда все три в порядке, предпечатная проверка успешна и ваш запрос POST будет запущенна сервер.
Включить заголовки CORS на Apache:
В вашем конфигурационном файле (для вашего сайта) или в .htaccess необходимо добавить
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
В этом случае предварительная проверка будет действительна в течение одного дня (86400 секунд)
Затем необходимо убедиться, что заголовки включены на Apache (в системах на основе Linux):
sudo a2enmod headers
Для Windows вам потребуется:
- открыть
httpd.conf
в вашем _apache_folder_/conf
- раскомментировать
#LoadModule headers_module modules/mod_headers.so
Перезапустить Apache
sudo service apache2 restart
Это должно сработать ...