@moow

Как включить CORS на php и получить данные через ES6 с другого домена?

Я настроил сервер он выдает такие заголовки:

HTTP/1.1 200 OK 
Date: Sun, 17 Oct 2021 01:38:17 GMT 
Server: Apache/2.4.29 (Ubuntu) 
Strict-Transport-Security: max-age=31536000; preload 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
Cache-Control: no-store, no-cache, must-revalidate, max-age=0 
Pragma: no-cache 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: * 
Access-Control-Allow-Headers: * 
Access-Control-Allow-Credentials: true 
Cache-Control: post-check=0, pre-check=0 
Content-Length: 13 
Keep-Alive: timeout=5, max=100 
Connection: Keep-Alive 
Content-Type: application/json; charset=utf-8


При попытке от клиента получить содержимое ответа от сервера получаю ошибку в консоли:

Access to fetch at '______' from origin 'http://0.0.0.0:9000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: 

No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.


Вот сам код клиента
fetch(url, {
    headers: { "Content-Type": "application/json; charset=utf-8" },
    method: 'POST',
    mode: 'cors',
    cache: 'no-cache',
    body: JSON.stringify(data),
}).then(res => res.json())
    .then(response => {
        console.log(response);
    })
    .catch(err => {
        console.log(err);
    });


Что я упускаю?

Я заметил что клиент еще отправляет запрос методом OPTIONS. Не знаю что это и зачем но сервер мой на этот запрос отвечает 404 ошибкой. Как его обработать и нужно ли?
  • Вопрос задан
  • 127 просмотров
Пригласить эксперта
Ответы на вопрос 1
@zkrvndm
Боты, парсеры, расширения
Да нужно. Запрос OPTIONS это предварительный запрос, его ваш браузер посылает чтобы просмотреть какие заголовки стоят и только если есть разрешающие заголовки он отправит уже второй настоящий запрос.

Перенастройте ваш сервер, чтобы вместо 404 он возвращал те же заголовки, но без тела запроса.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы