Заголовок авторизации пуст в базовом запросе jquery ajax к веб-API .Net Core 2.0 - PullRequest
0 голосов
/ 19 мая 2018

PostMan, клиент Asp.Net, fiddler и другие HTTP-клиенты работают нормально.Когда я делаю запрос с кодом, подобным приведенному ниже, я получаю 401. Поскольку я отлаживаю на стороне веб-API, значение HeaderAuthorization отсутствует.В HeaderAccessControlRequestHeaders есть значение «авторизация».Я ожидаю увидеть фактическое значение в кодировке base64.

eid=2 HTTP/1.1
Host: localhost:44322
Connection: keep-alive
Access-Control-Request-Method: GET
Origin: http://localhost:50891
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36
**Access-Control-Request-Headers: authorization**
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9

function getChiefComplaints() {

        //jQuery.support.cors = true;
       var symptoms = $('#txtChiefComplaints').val()
        // symptoms = symptoms.replace(",", "");

        symptoms = symptoms.replace(" ", "+");
       $.ajax({
            url: 'http://localhost:44322/method',
            type: 'GET',
            dataType: 'json',

            headers: { "Authorization": " Basic topsecretcredentials" },
            success: function (data) {
                WriteResponse(data);
            },
            error: function () {
                alert('no data');
            }
        });

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Мне наконец удалось решить эту проблему на стороне сервера.Используя .Net Core 2.0, у меня было свое промежуточное программное обеспечение.Мне пришлось перенести оператор app.UserCors () перед ним, и внезапно появились заголовки аутентификации.Таким образом, во всей общей документации говорилось, что app.UserCors должен был появиться перед app.UseMvc (), но я никогда не думал ставить его перед своим собственным промежуточным программным обеспечением.

Спасибо Chetan за ваш ответ.

0 голосов
/ 19 мая 2018

Вместо того, чтобы устанавливать заголовок авторизации напрямую, вы должны установить это в beforeSend объекте так:

beforeSend: function (xhr) {
    xhr.setRequestHeader ("Authorization", "Basic " + btoa(username + ":" + password)); },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...