перекрестный заголовок 'Authorization' с помощью jquery.ajax ()

Я пытаюсь отправить домен с несколькими источниками и добавить собственный заголовок «Авторизация». Пожалуйста, смотрите код ниже.

Ошибка:

XMLHttpRequest не может загрузить {url}. Поле заголовка запроса Авторизация не разрешена Access-Control-Allow-Headers.

function loadJson(from, to) {
    $.ajax({
        //this is a 'cross-origin' domain
        url : "http://localhost:2180/api/index.php",
        dataType : 'json',
        data : { handler : "statistic", from : from, to : to
        },
        beforeSend : setHeader,
        success : function(data) {
            alert("success");
        },
        error : function(jqXHR, textStatus, errorThrown) {
            alert("error");
        }
    });
}

function getToken() {
    var cookie = Cookie.getCookie(cookieName);
    var auth = jQuery.parseJSON(cookie);
    var token = "Token " + auth.id + ":" + auth.key;
}

function setHeader(xhr) {
    xhr.setRequestHeader('Authorization', getToken());
}

Я также попробовал:

headers : { 'Authorization' : getToken() },

в запросе ajax.

Может ли быть так, что фреймворк jquery-ajax блокирует перекрестную аутентификацию? Как я могу это исправить?

Обновить:

Кстати: есть ли более безопасный способ хранить auth.key на стороне клиента, чем в cookie? getToken () будет заменен более сложным методом, хэширующим тело, дату и т. д.

 istepaniuk29 апр. 2013 г., 13:58
ТвойgetToken()Метод ничего не возвращает.

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

Решение Вопроса

что, как я полагаю, у вас есть, поскольку это запрос к localhost), вам нужно будет добавить специфичные для CORS заголовки ответа. Самое простое, что нужно сделать, это добавить следующие заголовки ответа:

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Authorization

Ваш сервер также должен быть настроен для ответа на запросы HTTP OPTIONS. Вы можете узнать больше о создании запросов CORS здесь:http://www.html5rocks.com/en/tutorials/cors/

 radicalmatt30 июн. 2015 г., 17:03
В соответствии с MDN заголовок Access-Control-Allow-Origin необходимо будет установить в качестве источника при использовании запросов с учетными данными вместо подстановочного знака.
 Pacerier26 янв. 2016 г., 20:47
@radicalmatt, да, он тоже там написалstackoverflow.com/a/15254158/632951 : "Значение* не может использоваться для заголовка Access-Control-Allow-Origin, когда Access-Control-Allow-Credentials имеет значение true "
 Johannes Staehlin05 мар. 2012 г., 19:57
Хорошо .. Я забыл последний из этих трех заголовков. Я просто отправлял Origin и Methods. Глупая ошибка. :) Да, я реализовал ВАРИАНТЫ. Хорошая ссылка! Спасибо

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