CORS - статус 200, но ошибка в консоли Chrome devtools

У меня проблема с CORS, проблема в том, что мой код выполняется (состояние 200), но у меня есть ошибка в консоли разработчика Google Chrome.

Мой код:

function callUrl(url) {
    var xmlhttp = null;

    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    if (xmlhttp !== null) {
        xmlhttp.open("POST", url, true);
        xmlhttp.withCredentials = true;
        xmlhttp.send(JSON.stringify({
        }));
    } else {
        console.error("Your browser does not support XMLHTTP.");
    }
}

callUrl('https://www.website.com/tracking?etc...');

XMLHttpRequest не может загрузить https://www.website.com/tracking? Значение заголовка "Access-Control-Allow-Origin" в ответе не должно быть подстановочным знаком "*", если режим учетных данных запроса "включить". Источник ' http://localhost:8888/', следовательно, не имеет доступа. Режим учетных данных запросов, инициируемых XMLHttpRequest, контролируется атрибутом withCredentials.

Конфигурация сервера:

"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Credentials": true,

1 ответ

Решение

В Firefox вы получите эту ошибку... даже если она работает и получила статус 200.

Вы можете прочитать об этом в https://developer.mozilla.org/en-US/docs/Web/HTTP/Server-Side_Access_Control.

Если вы используете xmlhttp.withCredentials = true; вам нужно указать конкретное происхождение, которое разрешено в коде PHP. если какой-либо источник может вызвать ваш API ... удалите этот атрибут, чтобы вы могли использовать "Access-Control-Allow-Origin": "*"

Другие вопросы по тегам