Javascript CORS - отсутствует заголовок «Access-Control-Allow-Origin»

Я работал с CORS и столкнулся со следующей проблемой. Клиент жалуется на отсутствие заголовка «Access-Control-Allow-Origin», в то время какони присутствуют, а такжеклиент делает фактический запрос POST а такжеполучает 200.

function initializeXMLHttpRequest(url) {  //the code that initialize the xhr
    var xhr = new XMLHttpRequest();
    xhr.open('POST', url, true);
    xhr.withCredentials = true;
    xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');

    //set headers
    for (var key in headers) {
        if (headers.hasOwnProperty(key)) {  //filter out inherited properties
            xhr.setRequestHeader(key,headers[key]);
        }
    }

        return xhr;
}

В Chrome

журнал консоли Chrome

Chrome ОПЦИИ запрос

Chrome POST запрос

В Firefox

Firefox Console Log

Запрос опций Firefox

Firefox POST запрос

Ответы на вопрос(2)

Значениеnull заAccess-Control-Allow-Origin не будет, это должно бытьлибо домен происхождения или* разрешить любое происхождение.

Больше подробностей,обратитесь к MDN.

 Weishi Zeng28 июн. 2016 г., 04:01
Я установил его как домен происхождения. Но у localhost есть и эта проблема. (localhost запрашивает ресурсы в другом домене.)
Решение Вопроса

Вкратце: заголовки контроля доступа (например,Access-Control-Allow-Origin) нужно представить в ответ на обаОПЦИИ и актуальноСООБЩЕНИЕ.

Рабочий процесс:

клиент делатьОПЦИИ запрос с этими заголовками доступа HTTP. (например.Origin, Access-Control-Request-Method, Access-Control-Request-Headers)

сервер ответьте с этими заголовками контроля доступа, разрешая доступ. (например.Access-Control-Allow-Origin, Access-Control-Expose-Headers, Access-Control-Max-Age, Access-Control-Allow-Credentials, Access-Control-Allow-Methods, Access-Control-Allow-Headers)

Клиент делаетСООБЩЕНИЕ запрос с данными.

сервер ответить на POST. ЕслиAccess-Control-Allow-Origin заголовок НЕ присутствует в ответе сервера. Несмотря на то, что POST успешно и показывает 200 код состояния на вкладке сети,xhr.status 0 иxhr.onerror будет срабатывать. И браузер будет отображать сообщение об ошибке.

Заголовок Ссылки:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

Ваш ответ на вопрос